JavaSE中do-while循环的问题 我对编程很陌生,所以把我当成一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用do while循环,因为首先是一个语句,最后应该计算布尔条件
守则:JavaSE中do-while循环的问题 我对编程很陌生,所以把我当成一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用do while循环,因为首先是一个语句,最后应该计算布尔条件,java,do-while,Java,Do While,守则: import java.util.Scanner; class whysoserious { public static void main(String[] args) { Scanner sc = new Scanner(System.in); do{ String go = YES; int setone = 0; int settwo = 0; System.out.
import java.util.Scanner;
class whysoserious {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do{
String go = YES;
int setone = 0;
int settwo = 0;
System.out.println("Enter two numbers: ");
setone = sc.nextInt();
settwo = sc.nextInt();
int set = setone + settwo;
System.out.println("What is " +setone+ " + " +settwo+ " ? ");
int putone = 0;
putone = sc.nextInt();
if (putone == set)
System.out.println("Correct!");
else
System.out.println("Wrong Answer - The correct answer is: "+set+"");
System.out.println("Continue?");
cont = sc.nextLine();
} while (cont == go);
}
}
我被要求添加CMD提示行
C:\test>javac whysoserious.java
whysoserious.java:15:找不到
符号:变量是
地点:whysoserious班
字符串go=YES;
^whysoserious.java:38:找不到
符号:变量cont
地点:whysoserious班
cont=sc.nextLine;
^whysoserious.java:39:找不到
符号:变量cont
地点:whysoserious班
}而cont==go;
^whysoserious.java:39:找不到
符号:变量go
地点:whysoserious班
}而cont==go;
^4个错误
每次我试图编译它时,总是会出错。这背后的知识是,每当用户输入Yes或No继续时,我都想重复代码。请注意,代码在没有do{的情况下可以工作。此时,我被do所困扰。多个问题:
您从未声明cont或YES,因此编译器不知道它们是什么
您在循环中声明go,因此它在while表达式中超出范围
将字符串与==进行比较并不能满足您的需要-可能有两个不同的字符串具有相同的内容。请改用等于
来自编译器的错误消息应该告诉您关于前两个的信息-注意编译器所说的内容
最简单的修复方法:添加字符串cont;在执行之前,请放弃go并在YES.equalcont;如果用户输入YES或Y或YES或其他变量,则此操作仍将退出。行:
String go = YES;
应改为:
String go = "YES";
否则,编译器会认为YES是它不知道的某个变量,然后继续发疯。除了@Ronnie Howell所说的之外……使用equals方法实现字符串相等
while (cont == go);
应该是
while (cont.equals(go));
PS…我看不出您在哪里定义了cont。请在do循环之外声明它。以下操作有效:
import java.util.Scanner;
public class WhySoSerious {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String cont;
String go = "YES";
do {
System.out.println("Enter two numbers: ");
int setone = sc.nextInt();
int settwo = sc.nextInt();
int set = setone + settwo;
System.out.println("What is " + setone + " + " + settwo + " ? ");
int putone = sc.nextInt();
if (putone == set)
System.out.println("Correct!");
else
System.out.println("Wrong Answer - The correct answer is: " + set + "");
System.out.println("Continue?");
cont = sc.next();
} while (cont.equalsIgnoreCase(go));
}
}
请告诉我们错误。错误不仅仅是为了让你的屏幕变得杂乱无章,它们是为了解决问题。你的代码没有错误也可以正常工作,但是Java风格的指导原则规定类应该以大写字母开头,类、变量和方法都应该是驼峰式的。因此你的类应该命名为WhySoSerious。还有两个:@Racket您有三个结束括号,而不是2个,另一个已经在@Ronnie的答案中。谢谢。不过我有一个问题。如果我将sc.nextLine而不是sc.next放在这里,为什么不起作用?有什么区别吗?public String next:从这个扫描仪中查找并返回下一个完整的令牌。--------------------------------------publicString nextLine:使此扫描器超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括结尾处的任何行分隔符。该位置设置为下一行的开头。