Java - 方法结构执行

时间:2015-10-26 04:35:48

标签: java

我正在读赫尔辛基大学的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方法?感谢。

2 个答案:

答案 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!"或"已售出!"打印声明无论您选择"胡萝卜"或其他什么