我正在学习赫尔辛基大学的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方法的输入行正下方运行该行(打印Bought!或Sold!)?我不明白在不买卖胡萝卜的情况下如何终止有条件的交易。 readInput方法如何在这里操纵handleCommand方法?谢谢。
最佳答案
函数readInput()
的定义很奇怪:只有输入胡萝卜,它才会返回。readInput()
包含一个while
循环,该循环一直循环播放,直到用户输入胡萝卜为止,否则会显示“找不到商品”!然后再试一次。 handleCommand()
中的输出行仅在readInput()
返回时执行。
关于java - Java-方法结构执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33338544/