-2

我正在尝试编写一个 If 或 If-Else 语句,以在提示时未输入整数值时保护程序。我不断收到错误消息:预期为“.class”。

  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.");
      }  
4

6 回答 6

2

int是关键字,不能参与条件表达式。

在您的语句之后还有一个虚假的分号if,它充当受控语句,因此以下块是无条件的。

于 2013-03-05T03:26:48.213 回答
2

这不能编译:

if (miles != int);

您正在将变量与int, 这是一种类型进行比较。编译器建议你添加.class,这样你就可以获得类对象,但也不正确。

您想知道是否未输入整数值,但在这种情况下,会发生 nexInt() 会抛出一个InputMismatchException. 你应该做的是检查 hasNextInt() 如果用户输入一个整数。

于 2013-03-05T03:28:59.033 回答
1

您得到的语法错误是因为int是关键字。您不能将其用作标识符。

如果您想检查 aScanner是否已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();
于 2013-03-05T03:27:36.217 回答
0

你有一个 ; 在 if 语句之后。

您还可以让它检查用户输入的 int 不是数字的内容。可能想用一个数字来解决这个问题,它应该可以工作......从我在课堂上所记得的。

于 2013-03-05T03:29:05.147 回答
0
if (miles != int);

您无法测试数字是否是这样的 int 。此行末尾还有一个分号(应该删除)。然而,实际上根本没有理由有这条线。因为你写道:

miles = keyboard.nextInt();

英里必须是一个整数。否则 Scanner 会抛出异常。

于 2013-03-05T03:31:24.597 回答
0

我将首先说你需要做一个 Java 教程。您的代码充满了基本错误。


(假设这keyboardScanner...的一个实例)

错误 1 ​​- 您不能使用类型名称或关键字(例如int)作为值。

错误 2 - 您只能用于==将整数值(如 的值miles)与其他数字进行比较。

错误 3 - 你不应该在if (condition). 您编写的内容将编译,但它实际上意味着“如果条件为真,则执行空语句”。然后你会跟着一个块......将无条件地执行。

错误4 - 事实上,如果keyboard.nextInt()遇到不是有效整数的东西,它会抛出异常;例如InputMismatchException。如果要打印错误消息,则需要捕获该异常。

错误 5 - 显然你没有检查javadocnextInt()方法......


回顾一下......你犯了很多错误,因为你没有完成教程......或者你一直在跳过讲座或其他东西。

于 2013-03-05T03:44:52.173 回答