Самый короткий код Java

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 method)

Это не домашняя работа, я изучаю Java через книги и задания в интернете. Я просто хочу знать, может ли это стать немного короче. Речь идет не о скорости, ребята, это недоразумение.

Извините, я очень плохо знаю английский.

p / s: теперь я не могу задать ни одного вопроса:(есть только еще один вопрос, с которым я сталкиваюсь.

5 ответов

Решение

Почти правильно:

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

" Почти " из-за возможного целочисленного перекрытия. Кроме того, ваш длинный код может быть быстрее (signum() оперант на числах с плавающей запятой), не говоря уже о более читабельности.

Вы можете использовать тот факт, что Integer является Comparable:

Scanner input = new Scanner(System.in);
System.out.println(((Integer)input.nextInt()).compareTo(input.nextInt()));          

Вот версия кода Томаша без проблем с целочисленным переполнением:

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

Но да, это ужасно.

Сосредоточьтесь на удобочитаемости, а не на "кратчайшем числе возможных строк".

2 строки, которые работают:

Scanner input = new Scanner(System.in);
System.out.println(new Integer(input.nextInt()).compareTo(new Integer(input.nextInt())));
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println(Math.signum(input.nextInt() - input.nextInt()));
}
Другие вопросы по тегам