for循环不是语句错误

时间:2014-02-08 04:45:13

标签: java for-loop

我正在尝试使用for循环来检查用户是否正在输入整数。除非给出整数,否则代码不会让用户通过。我要发布我的一部分代码,但是如果你认为错误超出了我发布的内容,我会发布其余的代码:

错误:

not a statement

代码:

for (int prompt = 1; prompt < mainarray.length; prompt++) {
    System.out.println("Please enter #" + prompt);
    checkint = scan.nextInt();

    // The error is pointing to the != in the following loop.

    //I have check int declared above this code.

    for (checkint != (int) checkint) {
        System.out.println("This is not an integer, please input an integer");
    }
    mainarray[prompt] = checkint;
    System.out.println("Number has been added\n");
}

3 个答案:

答案 0 :(得分:3)

您需要使用If语句来检查此项,而不是for loop

if(checkint != (int)checkint)
{
    System.out.println("This is not an integer, please input an integer"); 
}

修改

Op表示他/她收到的错误为:java.util.InputMismatchException:null (in java.util.Scanner)

<强>解决方案:

您正在使用nextInt();java.util.Scanner.nextInt()方法将输入的下一个标记扫描为int。如果下一个标记与整数正则表达式不匹配,或者超出范围,它将抛出InputMismatchException

您可以使用此代码

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();

try{
    val = Integer.parseInt(s);
}
catch(NumberFormatException ex){
    System.out.println("This is not an integer, please input an integer"); 
}

更好,

try{
   checkint = scan.nextInt();
}
catch(Exception ex){
    System.out.println("This is not an integer, please input an integer"); 
}

<强> EDIT2

try
{
     checkint = scan.nextInt();
     mainarray[prompt]=checkint;
} 
catch(Exception ex)
{
     System.out.println("An integer is required;" + "input an integer please"); 
}

答案 1 :(得分:1)

更改

for(checkint != (int)checkint)

作为

for(;checkint != (int)checkint;)

来自Doc

for语句的一般形式可表示如下:

for (initialization; termination; increment) {
    statement(s)
}
  • 初始化表达式初始化循环;它被执行了 一次,当循环开始。
  • 终止表达式的计算结果为false时,循环 终止。
  • 每次迭代后都会调用 increment 表达式 环;这个表达式增量或完全可以接受 减少价值。

但这将导致代码中出现无限循环。所以改成它

if (checkint != (int)checkint)

答案 2 :(得分:1)

for(checkint != (int)checkint)

for循环不是有效的语法。那是一段时间的循环。考虑一下:

while (checkint != (int)checkint)

while循环有一个条件并将循环直到不满足该条件。 for循环实际上只是伪装的while循环,但有三个条件:

starting point/initialization; condition; increment

但是,您可以将起点和增量留空以模拟while循环。


HOWEVER 这会让你陷入无尽的循环。我不知道为什么你想要一个循环:

最后,你应该实际这样做:

if (checkint != (int)checkint)