我正在尝试使用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");
}
答案 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)
}
但这将导致代码中出现无限循环。所以改成它
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)