java - switch with while循环不会在被告知时结束

标签 java switch-statement

我有两个方法,getOption()driver()

getOption() 从扫描器中获取一个字符串,将其分解为单个单词,然后返回一个字符串数组。

driver() 然后获取该数组的第一个值 getOption()[0],并根据第一个 String 开始一个 while 循环。虽然 String 不等于“退出”,但检查该值是否与任何 switch case 匹配。但是,当我运行它时,它可以执行任何 switch case,但 quit 语句永远不起作用。谁能帮帮我?

public String[] getOption(){
    String optionLine[];
    Scanner input = new Scanner(System.in);
    System.out.println("Input string\n");
    String line = input.nextLine();
    optionLine = line.split(" ");
    return optionLine;
}

public void driver(){
    String option = getOption()[0];
    Stats s = new Stats(data);
    while (!"quit".equals(option)){
    switch (option) {
        case "add": //data.put(getOption()[1], getValues());
                    System.out.println("add");
                    break;
        case "set": System.out.println("set");
                    break;
        case "print": System.out.println(Arrays.toString(data));
                      break;
        case "sum": System.out.println(s.sum());
                    break;
        case "mean": System.out.println(s.mean());
                     break;
        case "stdev": System.out.println(s.standardDeviation());
                      break;
        case "median": System.out.println(s.median());
                       break;
        case "primes": System.out.println(s.primes());
                       break;
        case "summary": System.out.println("summary");
                        break;
          //case "test": System.out.println(Arrays.toString(getValues()));
    }
    driver();
    }
}

最佳答案

您在 while 循环结束时递归调用方法 driver();

无论您是否阅读了getOption,您仍然会返回方法内部...

这就是 while 条件显然不工作的原因......

一个非常不寻常的陷阱。

关于java - switch with while循环不会在被告知时结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35805248/

相关文章:

java - 从 Neo4j 2.1.7 升级到 2.2.0

java - 如何在 google api 图表的堆积柱形图中使用条形底部的注释显示轴值?

c++ - 我的代码中的 switch 语句出错。 (c++)

c - 开关(){案例: } performance in C

php - php 和 codeigniter 中 switch 和 case 的使用

java - 在 Eclipse 上, "Preferences -> General -> Workspace -> Refresh using native hooks or polling"是做什么的?

java - 检查一个值是否是许多常量之一

java - 何时在 Java 中使用 Enum 或 Collection

python - Python 字典中 switch/case 替换失败

c - 开关盒跌落场景