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行代码(不包括import,public class和main方法)
这不是作业,我通过互联网上的书籍和作业学习Java。我只想知道它是否可以缩短。这不是关于速度,你们都是误解。
抱歉,我的英语很差。
p / s:现在我不能问任何问题:(我面临的问题只有一个。
答案 0 :(得分:4)
几乎正确:
System.out.println((int)Math.signum(input.nextInt() - input.nextInt());
由于可能的整数过低,“几乎”。你的长代码实际上可能更快(浮点数上的signum()
operaton),更不用说更具可读性了。
答案 1 :(得分:3)
您可以使用Integer
为Comparable
的事实:
Scanner input = new Scanner(System.in);
System.out.println(((Integer)input.nextInt()).compareTo(input.nextInt()));
答案 2 :(得分:3)
这是Tomasz代码的一个版本,没有整数溢出问题:
System.out.println((int)Math.signum((double) input.nextInt() - (double) input.nextInt());
但是,这太可怕了。
注重可读性,不“可能的最短行数”。
答案 3 :(得分:0)
有效的2行:
Scanner input = new Scanner(System.in);
System.out.println(new Integer(input.nextInt()).compareTo(new Integer(input.nextInt())));
答案 4 :(得分:0)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(Math.signum(input.nextInt() - input.nextInt()));
}