-6
import java.util.*;
public class SoSanh {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int a = input.nextInt();
    int b = input.nextInt();
    if( a > b ) System.out.print("1");
    else if ( a < b ) System.out.print("-1");
    else System.out.print(0);               
}
}

我怎样才能使它尽可能小。它必须像 1-2 行代码(不包括导入、公共类和主要方法)

这不是家庭作业,我通过互联网上的书籍和作业来学习 Java。我只是想知道它是否可以变得更短。这与速度无关,你们误会了。

对不起,我的英语很差。

p / s:现在我不能问任何问题:(我只面临1个问题。

4

5 回答 5

4

几乎正确:

System.out.println((int)Math.signum(input.nextInt() - input.nextInt());

几乎”是由于可能的整数过低。此外,您的较长代码实际上可能更快(signum()浮点数操作),更不用说更具可读性了。

于 2012-08-18T11:24:01.147 回答
3

这是没有整数溢出问题的 Tomasz 代码版本:

System.out.println((int)Math.signum((double) input.nextInt() - (double) input.nextInt());

但是,是的,这太可怕了。

关注可读性,而不是“尽可能短的行数”。

于 2012-08-18T11:36:57.537 回答
3

您可以使用以下事实IntegerComparable

Scanner input = new Scanner(System.in);
System.out.println(((Integer)input.nextInt()).compareTo(input.nextInt()));          
于 2012-08-18T11:26:13.620 回答
0

2行有效:

Scanner input = new Scanner(System.in);
System.out.println(new Integer(input.nextInt()).compareTo(new Integer(input.nextInt())));
于 2012-08-18T11:25:12.020 回答
0
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println(Math.signum(input.nextInt() - input.nextInt()));
}
于 2012-08-18T11:26:12.600 回答