继续声明不起作用

时间:2013-01-05 16:50:29

标签: 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("Please Enter Numericals only");
    continue come_here;
}

如果用户输入了任何字符串而不是数字,则会出现异常并打印“Please Enter Numericals only”并且编译器执行下一个语句,这里正在丢失用户输入以克服我使用标签(come here:),如果出现异常发生它说“请输入仅数字”之后,我希望程序再次接受用户输入,我用继续come_here; 但它不起作用?

任何人告诉我哪里做错了?以及如何解决这个问题

谢谢

5 个答案:

答案 0 :(得分:1)

这不是有效的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");
        }
    }

答案 1 :(得分:0)

在此处参考Continue Usage, 用法与您学到的不一样

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

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

答案 2 :(得分:0)

我并不是说这是解决这个问题的最佳方式,但也许你正在寻找这样的东西。我用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");
    }
}

答案 3 :(得分:0)

您尝试进行用户输入循环,但诀窍是Java不允许goto实际 - 它' sa保留字,但它不会编译。

以下是您可以采用更简单的步骤做的事情:

答案 4 :(得分:0)

标签在Java中的功能与基本或C / C ++等其他语言不同。

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

    loop_i: for (int i = 0; i < 10; i++) {
        loop_j: for (int j = 0; j < 10; j++) {
            System.out.println(i + " " + j);
            if (j == 7) {
                // we want to jump out of the inner loop
                break loop_j; // or just break;
            }
            if (i == 3 && j == 4) {
                // now we want to jump out of both loops
                break loop_i;
            }
        }
    }

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