ArrayList赋值

Phi*_*hil 0 java arraylist

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

    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);
Run Code Online (Sandbox Code Playgroud)

其中(response)是一个变量,它将是2,1,0和modeOne,Two,Three是我写的返回ArrayList的方法.我遇到了一个问题,当我尝试打印finalPhrases时,它表明ArrayList是空的,我认为这可能与内存引用有关.

我知道方法运行正常,因为我跑的时候

System.out.println(modeOne(inputScanner, patternScanner)) 
Run Code Online (Sandbox Code Playgroud)

它打印出正确的arraylist,但是一旦我分配它,它就会失败.谁能告诉我如何解决这个问题?

Jam*_*esB 5

您需要在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);
Run Code Online (Sandbox Code Playgroud)

我添加了default子句来捕获响应具有0,1或2之外的值的场景.

我怀疑响应对你想要捕获的场景有不同的价值,所以默认在这里很重要,你应该为TODO编写代码.