0

是否可以创建此子模块?当所有代码都在 main 中时,代码可以正常工作,而不是作为子模块。

    {
    public static void main (String [] arsg)
            {
            int  number, inWeight, weight;
            boolean veriWeight;
            weight=inWeight();

            System.out.println("Average month weight is "+(weight/12));
            System.exit(0);
            }
                   private static int inWeight ();
                   {
                   for (int i=1; i<=12; i++)
                      {
                      number=ConsoleInput.readInt("enter month weight");
                      while (number<=0)
                        {
                        System.out.println("error, try again");
                        number=ConsoleInput.readInt("enter month weight");
                        }
                        inWeight += number;
                        }
                        return number;

    }
    }
4

1 回答 1

0

您不能只在方法内移动代码块。您必须小心地将代码中需要的所有变量作为参数传递给该方法,或者在方法本身的主体中声明它们;否则代码无法访问它们,因为它们在不同的“范围”中。

在您的情况下,所有变量都在您的main方法中声明,因此在方法中需要它们时它们不可用inWeight。将您的代码更改为这样的内容,然后它应该可以工作。

public static void main (String [] arsg) {
    int weight = inWeight();
    System.out.println("Average month weight is " + (weight / 12));
}

private static int inWeight() {
    int result = 0;
    for (int i=1; i<=12; i++) {
        int number = ConsoleInput.readInt("enter month weight");
        while (number <= 0) {
            System.out.println("error, try again");
            number = ConsoleInput.readInt("enter month weight");
        }
        result += number;
    }
    return result;
}

我已将您的numberinWeight变量移至方法主体,并重命名inWeightresult避免与方法本身混淆。另请注意,您返回的是用户输入的最后一个数字,而不是总重量。

于 2013-10-17T11:50:06.153 回答