我试图获得一个无限的加法计算。当我编译这段代码时,我得到无法访问的语句,我认为它是由不同的语句级别引起的。
import java.util.Scanner;
public class infiAdd {
public static void main (String [] args ){
int a;
char ans;
int c=0;
Scanner input;
input=new Scanner(System.in);
Bag: for(;;) {
System.out.print("Please enter a number:");
a=input.nextInt();
Bag2:for(;;) {
System.out.println("Do you wnat to add more ?[y/n]");
ans=input.next().charAt(0);
while (!(ans=='y')) {
while(!(ans=='n')){
System.out.println("Please enter a valid answer!");
continue Bag2;
}
c=c+a;
System.out.println("The result is :"+c);
}}
c=a+c;
continue Bag;}
}
}
无法访问的语句为c=a+c;
答案 0 :(得分:1)
用户成功输入后,您没有打破外部while循环。所以这些陈述后的控制:
c=c+a;
System.out.println("The result is :"+c);
会一次又一次地到达for
循环。因此,for
循环后的语句无法访问,因为循环现在将无限运行。
外部while循环结束后添加break
:
c=c+a;
System.out.println("The result is :"+c);
} // While loop ends
break;
for
个循环,你的任务太复杂了。您应该阅读loop
之外的第一个数字,然后添加while
循环以阅读来自用户的更多输入:
System.out.print("Please enter a number:");
a=input.nextInt();
while (true) {
System.out.println("Do you want to add more: [y/n]");
ans=input.next().charAt(0);
if (ans == 'n' || ans == 'N') break;
if (ans == 'y' || ans == 'Y') {
System.out.print("Please enter a number:");
int c = input.nextInt();
a += c;
continue;
}
System.out.println("Please enter a valid option: [y/n]");
continue;
}
System.out.println("The result is :"+c);
除此之外,在调用integer
方法之前,您还应该验证输入是否真的是input.nextInt()
,如果用户通过"abc"
,这将被吹嘘。对于那个使用input.hasNextInt()
方法。我把这个任务交给你了。
答案 1 :(得分:0)
你正在使用无限循环。所以很明显,程序永远不会达到c = a+c;
语句。
答案 2 :(得分:0)
无法访问的代码是永远不会被调用的代码。在你的代码行'c = a + c;'永远不会被调用,因为它在无限循环之外
答案 3 :(得分:0)
代码永远不会被运行,因为它是在永无止境的无限循环之后放置的。
我建议稍微缩进你的代码,在新行中总是有'}'花括号,这样你就可以看到这个问题了。
要摆脱错误,可以添加'break Bag2';在'System.out.println(“结果是:”+ c);'之类的内容之后:
public class InfiniteAdd {
public static void main(String[] args) {
int a;
char ans;
int c = 0;
Scanner input;
input = new Scanner(System.in);
Bag: for (;;) {
System.out.print("Please enter a number:");
a = input.nextInt();
Bag2: for (;;) {
System.out.println("Do you wnat to add more ?[y/n]");
ans = input.next().charAt(0);
while (!(ans == 'y')) {
while (!(ans == 'n')) {
System.out.println("Please enter a valid answer!");
continue Bag2;
}
}
c = c + a;
System.out.println("The result is :" + c);
break Bag2;
}
c = a + c;
continue Bag;
}
}
}
虽然我相信你的代码的基本逻辑是错误的。 有关扫描仪的一个很好的示例,请参阅:http://web.eecs.utk.edu/~bvz/cs365/examples/datacheck.html
同样作为一般惯例,您应该尝试在代码中使用这么多,while,break,continue,无限循环。