数组列表赋值

ArrayList Assignment

我在我的主要方法中编写了以下代码:

    ArrayList<String> finalPhrases = new ArrayList<String>();
    switch (response){
    //TODO: FIX
        case 2: finalPhrases = modeOne(inputScanner, patternScanner);
        case 1: finalPhrases = modeTwo(inputScanner, patternScanner);
        case 0: finalPhrases = modeThree(inputScanner, patternScanner);
    }   

    System.out.println(finalPhrases);

其中 (response) 是一个变量,它要么是 2,1,0,而 modeOne,Two,Three 是我写的 return ArrayList 的方法。我 运行 遇到一个问题,当我尝试打印 finalPhrases 时,它显示 ArrayList 是空的,我认为这可能与内存引用有关。

我知道这些方法工作正常,因为当我 运行

System.out.println(modeOne(inputScanner, patternScanner)) 

它打印出正确的数组列表,但是一旦我分配它,它就失败了。谁能告诉我如何解决这个问题?

您需要在 case 语句中使用 break。

ArrayList<String> finalPhrases = new ArrayList<String>();
switch (response){
//TODO: FIX
    case 2: 
        finalPhrases = modeOne(inputScanner, patternScanner);
        break;
    case 1: 
        finalPhrases = modeTwo(inputScanner, patternScanner);
        break;
    case 0:
        finalPhrases = modeThree(inputScanner, patternScanner);
        break;
    default:
        // TODO add code for value other than 0, 1 or 2
        break;
}   

System.out.println(finalPhrases);

我添加了 default 子句来捕获响应值不是 0、1 或 2 的情况。

我怀疑响应对于您希望捕获的场景具有不同的值,因此默认值在这里很重要,您应该为 TODO 编写代码。