我正在学习赫尔辛基大学的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/

10-12 00:38
查看更多