Как сделать арифметику с использованием больших чисел в переменных в Java без исключения - PullRequest
0 голосов
/ 23 сентября 2019

Я должен написать программу, которая принимает число и проверяет, может ли оно быть включено в определенный тип данных или нет.Вот фрагмент:

try {
   long x=sc.nextLong();
   System.out.println(x+" can be fitted in:");
   if(x>=-128 && x<=127) {
      System.out.println("* byte");
   }
   else if(x>=-32768 && x<=32768) {
      System.out.println("*short");
   }
   else if(x>= −2147483648l && x<= +2147483647L) {
      System.out.println("*int");
   }
   else if(x>=-9223372036854775808l && x<= +9223372036854775807l) {
      System.out.println("*long");
   }
} catch(Exception e) {
   System.out.println(sc.next()+" can't be fitted anywhere.");
}

Когда я компилирую этот код, появляется странная ошибка.

Solution.java:30: error: illegal character: \8722
else if(x>= −2147483648l && x<= +2147483647L)
^
Solution.java:30: error: not a statement
else if(x>= −2147483648l && x<= +2147483647L)
^
Solution.java:30: error: ';' expected
else if(x>= −2147483648l && x<= +2147483647L)
^
Solution.java:34: error: 'else' without 'if'
   else if(x>=-9223372036854775808l && x<= +9223372036854775807l)

Любая помощь будет оценена

PS Я только началJava, пожалуйста, укажите на любые ошибки новичка, которые я сделал.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Символ '-', который вы использовали для -2147483648l, не является допустимым символом, сравните его с другими символами -32768 или -9223372036854775808l.Это ошибка компиляции.

2 голосов
/ 23 сентября 2019

После копирования вашего кода я продублировал ошибку.Не похоже, что есть проблема;этот персонаж выглядит как обычный дефис, но это не так.Это Unicode "знак минус" , который по иронии судьбы не распознается как унарный оператор минус.

else if(x>= −2147483648l && x<= +2147483647L)
            ^

Вы можете увидеть разницу визуально:

System.out.println((int) '−');    // Unicode minus sign, U+2212, error in code
System.out.println((int) '-');    // Ordinary hyphen, works in code

Вывод:

8722        // Decimal of 0x2212
45          

Возможно, вы скопировали этот знак минуса Юникода из другого документа.Замените его обычным дефисом, и он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...