我刚刚开始学习,我需要其中一项练习的帮助。

我需要最终用户输入每个月的降雨次数。
然后,我需要计算平均降雨量,最高月份和最低月份以及降雨量高于平均水平的月份。

我一直在最高和最低处得到相同的数字,我也不知道为什么。我正在认真地拔头发。任何帮助将不胜感激。

这是我到目前为止的内容:

public class rainfall {

    /**
     * @param args
     */
    public static void main(String[] args)
    {
    int[]  numgroup;
    numgroup = new int [13];
    ConsoleReader console = new ConsoleReader();
    int highest;
    int lowest;
    int index;
    int tempVal;
    int minMonth;
    int minIndex;
    int maxMonth;
    int maxIndex;


    System.out.println("Welcome to Rainfall");

    for(index = 1; index < 13; index = index + 1)
    {
        System.out.println("Please enter the rainfall for month " + index);
                tempVal = console.readInt();
                while (tempVal>100 || tempVal<0)
                    {
                    System.out.println("The rating must be within 0...100. Try again");
                    tempVal = console.readInt();
                    }
                numgroup[index] = tempVal;
    }



    lowest = numgroup[0];


        for(minIndex = 0; minIndex < numgroup.length; minIndex = minIndex + 1);
        {
                if (numgroup[0] < lowest)
                {
                lowest = numgroup[0];
                minMonth = minIndex;
                }
        }

    highest = numgroup[1];


            for(maxIndex = 0; maxIndex < numgroup.length; maxIndex = maxIndex + 1);
            {
                    if (numgroup[1] > highest)
                    {
                    highest = numgroup[1];
                    maxMonth = maxIndex;
                    }
            }


        System.out.println("The average monthly rainfall was ");
        System.out.println("The lowest monthly rainfall was month " + minIndex);
        System.out.println("The highest monthly rainfall was month " + maxIndex);

        System.out.println("Thank you for using Rainfall");

    }


    private static ConsoleReader ConsoleReader() {

        return null;
    }

}


谢谢,

艾米莉

最佳答案

首先,由于这是您的家庭作业,因此您不应该在stackoverflow.com上询问它

现在看看您的代码


  
  lowest = numgroup[0];
  


为什么?似乎您尝试使用此算法来查找min:


  1.1假设第一个数字(您认为是numgroup[0])是min(在代码中命名为lowest
  1.2。将其与所有其他数字进行比较,如果任何数字较小,则替换最小值(即lowest)。


但是,numgroup[0]不是您的第一个电话号码!您像这样开始了第一个for循环


  for(index = 1;...


因此,您的第一个电话号码是numgroup[1]

接下来,第二个循环开始


  for(minIndex = 0;


而索引0处的元素甚至都不打算由您使用(我想)

接下来,找出当前迭代次数是否小于lowest的条件是


  if (numgroup[0] < lowest)


它总是将索引0处的元素与lowest进行比较(我猜这不是您的意图)。

07-28 13:53