数组列表赋值
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 编写代码。
我在我的主要方法中编写了以下代码:
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 编写代码。