我是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;
但它不起作用?
任何人告诉我哪里做错了?以及如何解决这个问题
谢谢
答案 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保留字,但它不会编译。
以下是您可以采用更简单的步骤做的事情:
Scanner
object with the System.in
InputStream passed in do...while
循环:
Integer.parseInt()
答案 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,因为它们更容易解释。但在标签问题上继续采用相同的规则。