程序不会输出最低的数字[Java]
我正在创建一个程序,用户在其中输入随机数,然后返回最高和最低的数字。我将highestNumber和LowerstNumber初始化为数组中的第一个元素。然后我检查这个数字是否大于或小于为各个变量分配的值。除了将索引值与最低数字进行比较的if语句外,其他所有语句都可以工作。我不知道为什么它不起作用。对于最大的数字,它与if语句正好相反(顺便说一句,它是有效的)。对于最小的数字,程序始终返回0.0。以下是我的主要方法:
private static String arrayLimit;
private static double highestNumber;
private static double lowestNumber;
public static void main(String[] argument) throws IOException
{
BufferedReader console =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("How many numbers do you want to enter? ");
arrayLimit = console.readLine();
int limit = Integer.parseInt (arrayLimit);
int[] number = new int[limit];
highestNumber = number[0];
lowestNumber = number[0];
for (int index = 0; index < limit; index++)
{
System.out.print("Number " + (index + 1) + ": ");
String input = console.readLine();
number[index] = Integer.parseInt(input);
if (number[index] > highestNumber)
{
highestNumber = number[index];
}
if (number[index] < lowestNumber)
{
lowestNumber = number[index];
}
}
System.out.println("Highest number: " + highestNumber);
System.out.println("Lowest number: " + lowestNumber);
}
# 1 楼答案
注意如何将最高和最低值初始化为
number[0]
。在这一点上,它们都是0。当您浏览数字列表时,没有任何东西会小于0(假设您只输入正数),因此0将是您的输出。我建议将其初始化为Integer.MAX_VALUE
——根据定义,每个int都比这个低。类似地,您可能希望将highestNumber = number[0]
更改为highestNumber = Integer.MIN_VALUE
,这是一个不低于的值,这将允许您的程序也处理负数# 2 楼答案
**请注意,除了在用户实际输入数字[0]的值之前通过数字[0]初始化了最高位数字和最低位数字之外,代码的所有内容都很好,所以请使用这些 循环中的初始化语句,当索引=0时,用户在其中输入数字[0]的值。 这就是全部。它会工作的,因为我在我的电脑上测试过,所以,试试吧
# 3 楼答案
我将向您展示我建议如何构造此代码。我的主要观点是,您应该使用数组来构造代码,但由于您使用的是面向对象的语言,因此我将使它更面向对象。我不太懂java,所以把下面的代码当作伪代码。有些类型可能是错误的,有些方法名可能是虚构的,等等
# 4 楼答案
不,您没有将这些变量初始化为数组的第一个元素:如果您这样做了,您的程序就会运行良好。问题是,在
number[0]
元素获得第一个有意义的值之前,您已经进行了赋值,而是存储了默认值。这就是为什么你的程序为最小的数字生成零您可以通过存储最高和最低数字的索引来解决此问题,而不是存储数字本身: