Java 继续语句不工作

Java 继续语句不工作,java,Java,我是java新手 int nop=o; BufferedReader scan = new BufferedReader( new InputStreamReader(System.in)); come_here: System.out.println("Enter length"); try{ int n=Integer.parseInt(scan.readLine()); nop=n; }catch(Exception sandy){ System.out.println("

我是java新手

int nop=o;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
come_here:
System.out.println("Enter length");
try{
    int n=Integer.parseInt(scan.readLine());
nop=n;
}catch(Exception sandy){
    System.out.println("Please Enter Numericals only");
    continue come_here;
}
如果用户输入了任何字符串而不是数字,则出现异常并打印“请仅输入数字”,并且编译器执行下一个语句,此时将丢失用户输入以克服我使用的标签(
come here:
),如果出现异常,则会显示“请仅输入数字”之后我想让程序再次接受用户输入,我使用continue
come\u here
但它不起作用

有人告诉我哪里做错了吗?如何解决这个问题

谢谢

请参阅此处, 用法和你所学的不一样

以下代码可用于读取整数值

int nop=o;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
for(;;) {
        System.out.println("Enter length");
        try{
        int n=Integer.parseInt(scan.readLine());
        nop=n;
break;
            }catch(Exception sandy){
                System.out.println("Please Enter Numericals only");
            }
    }

我并不是说这是解决这个问题的最佳方法,但也许你正在寻找类似的方法。我将您的
goto
-语句替换为
while(true)
循环。成功解析整数后,
while
循环退出

int nop=0;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
while (true) {
    System.out.println("Enter length");
    try {
        int n=Integer.parseInt(scan.readLine());
        nop=n;
        break;
    } catch(Exception sandy){
        System.out.println("Please Enter Numericals only");
    }
}

这不是有效的Java。我将按照以下方式编写代码:

    int nop = 0;
    BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
    for (;;) {
        System.out.println("Enter length");
        try {
            int n = Integer.parseInt(scan.readLine());
            nop = n;
            break;
        } catch (Exception sandy) {
            System.out.println("Please Enter Numericals only");
        }
    }

您试图执行一个用户输入循环,但诀窍是Java不允许实际使用—它是一个保留字,但不会编译

以下是您可以在更简单的步骤中执行的操作:

  • 使用
    do…while
    循环:
    • 提示用户输入
    • 尝试使用
      Integer.parseInt()
    • 捕获输入美元符号时产生的异常
    • 提示他们说出有效输入是什么
    • …虽然我们没有一些有效的输入

标签在Java中的功能与在其他语言(如Basic或C/C++)中的功能不同

它们标记一个循环,而不是可以跳转到的命令。通常,只有在具有嵌套循环时才需要它们。像这样:

loop_i:for(int i=0;i<10;i++){
循环j:for(int j=0;j<10;j++){
系统输出打印项次(i+“”+j);
如果(j==7){
//我们想跳出内环
中断循环_j;//或只是中断;
}
如果(i==3&&j==4){
//现在我们想跳出两个循环
断环;
}
}
}

该示例使用break,因为它们更容易解释。但是continue在标签问题上有相同的规则。

这不是
continue
的意思。请参见Java中的
continue
与Basic中的
goto
不一样。您的代码在使用
编译时是如何编译的?请看这里:
?我认为最重要的问题是考虑goto,而不是结构化循环和条件。我建议阅读一些Java代码来了解它是如何工作的。@AndrewMao Java确实支持标签,“continue label;”是完全有效的Java—例如,如果它位于嵌套循环中,您可以通过适当的标签继续到外循环的下一次迭代。然而,Sandeep似乎误用了这一点;现在还不清楚到底发生了什么-所呈现的代码片段不应该编译(对我来说可能会失败,比如“not a loop label:come_here”)我需要的是,如果用户输入任何数字值,它就可以了,这并不意味着我需要告诉他“请只输入数字”并再次重复代码,以便用户下次输入nemerical值。如果我的代码出错,请告诉我哪里出错以及如何解决此问题。谢谢。值得注意的是,标签和
break
不必与循环一起使用。看,哇。。我不知道,也从未见过这样的代码。谢谢你的评论。我认为这并不常见。我提到它只是为了完整。