2013-03-05 4 views
-2

Я пытаюсь написать инструкцию If или If-Else, которая защищает программу, когда целочисленное значение не будет введено при появлении запроса. Я продолжаю получать сообщение об ошибке: «.class» ожидается.Ошибка If или If-Else

System.out.println("Type the name of your destination: "); 
     destination = keyboard.nextLine(); 

     System.out.print(destination + " is how many miles away?"); 

     miles = keyboard.nextInt(); 

     if (miles != int); 
     { 
     System.out.println(miles + " is not valid. I will use 100 for the number of miles."); 
     } 
+0

Какое сообщение об ошибке? –

+0

Почему вы не используете Integer.parseInt()? Если он не является допустимым целым числом, он выдает NumberFormatException. – Dhinakar

ответ

2

int это ключевое слово и не может участвовать в условных выражениях.

Существует также паразитная точка с запятой после вашего оператора if, который действует как управляемый оператор, поэтому следующий блок является безусловным.

+2

Объясните мне, как 'miles! = Int' является допустимым оператором, который будет компилироваться и выполняться должным образом. – 2013-03-05 03:27:49

+2

Я не собираюсь обсуждать то, что я на самом деле не сказал. – EJP

+0

Тогда ваш ответ по-прежнему не устраняет проблему. – 2013-03-05 03:31:37

1

Синтаксическая ошибка, которую вы получаете, связана с тем, что int - это ключевое слово. Вы не можете использовать его как идентификатор.

Если вы хотели бы проверить, если Scanner имеет int готов для чтения, используйте keyboard.hasNextInt() в вашем состоянии:

int miles; 
while (!keyboard.hasNextInt()) {  
    System.out.println(keyboard.nextLine() + " is not valid. Please enter a different number."); 
} 
int miles = keyboard.nextInt(); 
2

Это не может скомпилировать:

if (miles != int); 

Вы сравниваете переменную с int, который является типом. Компилятор предлагает вам добавить .class, чтобы вы могли получить объект класса, но это также неверно.

Вы хотите знать, не введено целочисленное значение, но в этом случае произойдет то, что nexInt() будет генерировать InputMismatchException. Вы должны сделать это с помощью hasNextInt(), если пользователь вводит целое число.

0

у вас есть; после утверждения if.

У вас также есть проверка того, что пользователь вводит в int, который не является числом. может захотеть исправить это с помощью числа, и он должен работать ... из того, что я помню из класса.

0
if (miles != int); 

Вы не можете проверить, является ли число int таким. У вас также есть полуколонка в конце этой строки (которая должна быть удалена). Однако на самом деле нет причин иметь эту линию вообще. Поскольку вы написали:

miles = keyboard.nextInt(); 

мили должны быть инт. В противном случае сканер будет отбрасывать исключение.

0

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


(Предполагая, что keyboard является экземпляром Scanner ...)

Ошибка 1 - Вы не можете использовать имя типа или ключевое слово (например, int) в качестве значения.

Ошибка 2 - Вы можете использовать только == для сравнения целочисленных значений (например, значение miles) с другими номерами.

Ошибка 3 - Вы не должны ставить точку с запятой после if (condition). То, что вы написали, будет скомпилировано, но на самом деле это означает «если условие истинно, а затем выполнить пустое утверждение».Затем вы следовали за ним с блоком ... который будет выполнен безоговорочно.

Ошибка 4 - На самом деле, если keyboard.nextInt() встречает что-то, что не является допустимым целым числом, оно выдаст исключение; например InputMismatchException. Если вы хотите распечатать сообщение об ошибке, вам понадобится catch это исключение.

Ошибка 5 - Очевидно, вы не проверяли javadoc для метода nextInt() ...


Резюмируя ... вы делаете так много ошибок, потому что вы не сделали учебник .. или вы пропускаете лекции или что-то еще.