为什么我不能将appleArray,blueberryArray和peanutArray发送到calcTotalPies方法?
1
1 1
1 2 1
_ _ _ _
答案 0 :(得分:1)
局部变量总是在块中声明,并且只在此块中存活(注意:方法体或if
的主体或循环也是块)。
您仅在其周围的appleArray
- 块中声明blueberryArray
,peanutArray
和if
,因此它们在最低if
- 块中不存在。编译器应该告诉你这些数组没有被定义。
答案 1 :(得分:0)
当你的代码执行到达你的方法时,if else阻塞范围内的while循环,在这个循环中你的数组已经结束并且它们是不可访问的。所以你需要在循环之外初始化它们。
试试这个
final int MAX_PIES = 81;
final int MAX_PER_TYPE = 27;
String[] peanutArray = null;
String[] blueberryArray = null;
String[] appleArray = null;
String typeOfPie = getPieType();
while (!typeOfPie.equalsIgnoreCase("q")) {
if (typeOfPie.equalsIgnoreCase("apple")) {
appleArray = fillApple(typeOfPie, MAX_PER_TYPE);
} else if (typeOfPie.equalsIgnoreCase("blueberry")) {
blueberryArray = fillBlueberry(typeOfPie, MAX_PER_TYPE);
} else if (typeOfPie.equalsIgnoreCase("peanut")) {
peanutArray = fillPeanut(typeOfPie, MAX_PER_TYPE);
}
typeOfPie = getPieType();
}
if (typeOfPie.equalsIgnoreCase("q")) {
int totalPies = calcTotalPies(appleArray, blueberryArray, peanutArray);
}