Самый короткий код 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()));
}