Java For循环不是语句错误

Java For循环不是语句错误,java,for-loop,Java,For Loop,我试图使用for循环来检查用户是否输入了整数。除非给出整数,否则代码不会让用户通过。我将发布部分代码,但如果您认为错误超出我发布的范围,我将发布其余代码: 错误: not a statement 代码: for(int-prompt=1;prompt

我试图使用for循环来检查用户是否输入了整数。除非给出整数,否则代码不会让用户通过。我将发布部分代码,但如果您认为错误超出我发布的范围,我将发布其余代码:

错误:

not a statement
代码:

for(int-prompt=1;prompt
更改

for(checkint != (int)checkint)
作为

for语句的一般形式可以表示为:

for (initialization; termination; increment) {
    statement(s)
}
  • 初始化表达式初始化循环;已经执行了 一次,循环开始时
  • 当终止表达式的计算结果为false时,循环 终止
  • 增量表达式在通过 环这个表达式的增量或增量是完全可以接受的 减少一个值
但这将导致代码中出现无限循环。所以把它改成

if (checkint != (int)checkint)
对于for循环无效的语法。这是一个while循环。考虑这一点:

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

起始点/初始化;条件增量

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


然而这会让你陷入无休止的循环。我不知道你为什么想要一个循环:

最后,您实际上应该这样做:

if (checkint != (int)checkint)

您需要一个If语句来检查这一点,而不是循环的
for

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

Op说他/她得到的错误是:
java.util.InputMismatchException:null(在java.util.Scanner中)

解决方案:

您正在使用
nextInt()
java.util.Scanner.nextInt()

您可以使用此代码

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

请检查for循环的语法。
for(checkint!=(int)checkint)
不是有效的for循环。坦率地说,我不理解比较……这不是一个无限循环吗?(即使语法有效)我继续进行回滚。作为一般规则,永远不要更新问题以处理完全不同的问题,即使它来自同一代码。你唯一应该改变问题的时候是,如果最初的表述偏离了主题,即使那样,也不应该是一个剧烈的改变。我以前从未见过这种情况。所以如果里面只有一个语句,就必须用分号来覆盖它?@munchscheal它与用分号覆盖它无关。for
循环的
具有非常特定的语法和3个不同的表达式。这些表达式可以是空语句,所以我必须使用不同的循环。我添加了分号,得到了一个
java.uil.inputmismatchexception:null
错误。如果您只提供条件语句,而不是初始化或高级语句,那么您需要分号,以便解析器知道您提供了哪个子句。当然,如果这确实是您想要编写的,那么您应该使用
而不是
。如果我将其放入字符中,我会得到一个错误:
java.util.InputMismatchException:null(在java.util.Scanner中)
@munchscheal,因为您使用的是
scan.nextInt()我会更新我的答案我不需要把字符串转换成整数吗?我以前从未使用过try-catch,难道我不能只比较上面原始if语句中的字符串吗?@munchshair如果要使用if语句进行比较,请不要使用
scan.nextInt()哦,我明白了,这是为例外而做的。我仍然需要将字符串转换为int,对吗?
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"); 
}
try
{
     checkint = scan.nextInt();
     mainarray[prompt]=checkint;
} 
catch(Exception ex)
{
     System.out.println("An integer is required;" + "input an integer please"); 
}