-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行のコードのようにする必要がありました(import、public class、mainメソッドを含まない)

これは宿題ではありません。私はインターネット上の本や課題を通してJavaを学びます。短くなるかどうか知りたいだけです。それはスピードについてではありませんuみんなが誤解しています。

申し訳ありませんが、私は英語がとても苦手です。

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

あなたは次の事実を使用することができIntegerますComparable

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

整数のオーバーフローの問題がないTomaszのコードのバージョンは次のとおりです。

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

しかし、はい、これは恐ろしいです。

「可能な限り短い行数」ではなく、読みやすさに焦点を合わせます。

于 2012-08-18T11:36:57.537 に答える
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 に答える