我在主方法中编写了以下代码:
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是我写的返回ArrayList的方法。我遇到了一个问题,当我尝试打印finalPhrases时,它表明ArrayList是空的,我认为这可能与内存引用有关。
我知道这些方法正常运行,因为当我运行
时System.out.println(modeOne(inputScanner, patternScanner))
它打印出正确的arraylist,但是一旦我分配它,它就会失败。有人能告诉我如何解决这个问题吗?
答案 0 :(得分:5)
您需要在案例陈述中使用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编写代码。