我刚刚开始学习,我需要其中一项练习的帮助。
我需要最终用户输入每个月的降雨次数。
然后,我需要计算平均降雨量,最高月份和最低月份以及降雨量高于平均水平的月份。
我一直在最高和最低处得到相同的数字,我也不知道为什么。我正在认真地拔头发。任何帮助将不胜感激。
这是我到目前为止的内容:
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
进行比较(我猜这不是您的意图)。