Java 继续语句不工作
我是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("
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:
),如果出现异常,则会显示“请仅输入数字”之后我想让程序再次接受用户输入,我使用continuecome\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
不必与循环一起使用。看,哇。。我不知道,也从未见过这样的代码。谢谢你的评论。我认为这并不常见。我提到它只是为了完整。