我是编程新手,所以请认为我是一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用“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.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提示行。
每次尝试编译时总会出错。这背后的知识是我希望每次用户输入“是”或“否”时重复代码以继续。观察代码在没有do {的情况下工作。在这一点上,我坚持做的同时。
答案 0 :(得分:7)
多个问题:
你永远不会声明cont
或YES
所以编译器不知道它们是什么
您在循环中声明go
,因此它超出while
表达式
将字符串与==
进行比较并不能满足您的需要 - 您可能有两个不同的字符串具有相同的内容。请改用equals
。
编译器的错误消息应该告诉你前两个 - 注意编译器的用法。
最简单的修复:在String cont;
之前添加do
,摆脱go
并进行测试while ("YES".equals(cont));
如果用户输入“是”或“Y”,这仍然会退出“然而,”或“是”或其他一些变体。
答案 1 :(得分:3)
该行:
String go = YES;
应为:
String go = "YES";
否则,编译器会认为YES是一些它不知道的变量,并继续发疯。
答案 2 :(得分:1)
添加@Ronnie Howell所说的内容......使用equals()
方法进行字符串相等。
while (cont == go);
应该阅读......
while (cont.equals(go));
PS ......我没看到你定义cont
的位置。请在do
循环之外声明。
答案 3 :(得分:0)
以下作品:
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));
}
}