无法将数组传递给方法

时间:2015-07-10 19:44:31

标签: java arrays

为什么我不能将appleArray,blueberryArray和peanutArray发送到calcTotalPies方法?

      1
    1   1
  1   2   1
_   _   _   _

2 个答案:

答案 0 :(得分:1)

局部变量总是在块中声明,并且只在此块中存活(注意:方法体或if的主体或循环也是块)。

您仅在其周围的appleArray - 块中声明blueberryArraypeanutArrayif,因此它们在最低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);
}