我正在读赫尔辛基大学的Java课程,我对其中一个例子有疑问。
有问题的代码:
import java.util.Scanner;
public class UserInterface {
private Scanner reader;
public UserInterface(Scanner reader) {
this.reader = reader;
}
public void start() {
while (true) {
String command = reader.nextLine();
if (command.equals("end")) {
break;
} else {
handleCommand(command);
}
}
}
public void handleCommand(String command) {
if (command.equals("buy")) {
String input = readInput("What to buy: ");
System.out.println("Bought!");
} else if (command.equals("sell")) {
String input = readInput("What to sell: ");
System.out.println("Sold!");
}
}
public String readInput(String question) {
while (true) {
System.out.print(question);
String line = reader.nextLine();
if (line.equals("carrot")) {
return line;
} else {
System.out.println("Item not found!");
}
}
}
}
如果您选择购买或出售不是胡萝卜的东西,为什么它不会在handleCommand方法中直接在输入行下方运行该行(打印买入或卖出!)?我不明白在没有买卖胡萝卜的情况下如何终止条件。 readInput方法如何在这里操作handleCommand方法?感谢。
答案 0 :(得分:1)
函数readInput()
的定义很奇怪:只有输入 carrot 才会返回。
readInput()
包含一个while
循环,在用户输入 carrot 之前一直循环,否则会显示 Item not found!并再次尝试。 handleCommand()
中的输出行仅在readInput()
返回时执行。
答案 1 :(得分:0)
基本上你的readInput()方法返回String" line"只有当用户输入"胡萝卜"否则它会继续进入else部分并继续打印" Item not found!"。但不是System.out.println("找不到项目!"), 如果你只是回复那个陈述,那么"胡萝卜"或"未找到物品!"将被退回并存储在"输入" handleCommand()方法的变量。在这种情况下,现在它将打印你的'#Bay!"或"已售出!"打印声明无论您选择"胡萝卜"或其他什么