我在我的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,但是一旦我分配它,它就会失败.谁能告诉我如何解决这个问题?
您需要在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编写代码.
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |