gpt4 book ai didi

java - 从填充数组计算范围时出现问题(Java)

转载 作者:行者123 更新时间:2023-11-30 01:57:30 25 4
gpt4 key购买 nike

我目前正在为我的计算机访问类(class)做作业。下面我截取了该项目的上下文。我们的老师给了我们代码片段来帮助我们开始。在本例中,他为我们提供了填充用户的 2 个数组的代码。我编写了代码来查找数组中的最小数字(以计算范围)并且它有效。如下图...

上下文:https://i.imgur.com/sReC8ym.png

public static void main(String[] args) {
double[] values = {81, 52, 10, 50, 18, 4, 7};
double smallest = values[0];
for (int i = 0; i < values.length; i++) {
if (values[i] < smallest) {
smallest = values[i];

}
}
System.out.println(smallest);
}

但是,当我在项目中实现此代码时,结果始终为 0。我认为问题出在片段代码上。找到最大数字的函数在项目中运行。找到最大的数字并服从最小的数字是可行的,但是最小的数字结果总是0。我已经将整个程序粘贴在下面。抱歉,如果修复工作量太大,您有什么建议吗?谢谢

public static String[] strings;
public static double[] data;

public static void main(String[] args) {

populatArrays();
printArrays(strings, data);
double theAverage = calculateAverage(data);
System.out.println("The average rainfall is " + theAverage);
double largest = getLargest(data);
System.out.println("The largest amount of rainfall is " + largest);
double smallest = getSmallest(data);
System.out.println("The smallest amount of rainfall is " + smallest);
double theRange = getRange(data);
System.out.println("The rainfall range is " + theRange);
double theTotal = getTotal(data);
System.out.println("The total rainfall is " + theTotal);
}

//User input for the array & printing out questions
public static void populatArrays() {

Scanner input = new Scanner(System.in);
System.out.println("How many cities would you like to add to the Rainfall calculator?");
int elements = input.nextInt();
String[] someStrings = new String[elements];
double[] someData = new double[elements];

for (int i = 0; i < someData.length; i++) {
input = new Scanner(System.in);
System.out.println("Enter a City");
someStrings[i] = input.nextLine();
System.out.println("Enter the annual rainfall");
someData[i] = input.nextDouble();
}
strings = someStrings;
data = someData;
}

//code printing out the array on screen
public static void printArrays(String[] stringArray, double[] doubleArray) {

for (int i = 0; i < stringArray.length; i++) {
System.out.println("City: " + stringArray[i]);
System.out.println(doubleArray[i] + "mm");

}
}

//code calculating the mean average
public static double calculateAverage(double[] thenumbers) {

double sum = 0;
for (double thenumber : thenumbers) {
sum += thenumber;
}

double result = sum / thenumbers.length;
return result;

}

//code calculating the largest number in the array
public static double getLargest(double[] thenumbers) {

double largest = 0;

for (int i = 0; i < thenumbers.length; i++) {
if (thenumbers[i] > largest) {
largest = thenumbers[i];
}
}

return largest;
}

//code calculating the smallest number in the array
public static double getSmallest(double[] thenumbers) {

double smallest = 0;

for (int i = 0; i < thenumbers.length; i++) {
if (thenumbers[i] < smallest) {
smallest = thenumbers[i];
}
}

return smallest;
}

// code calculating the range
public static double getRange(double[] thenumbers) {

double largest = getLargest(data);
double smallest = getSmallest(data);

double theRange = largest + smallest;

return theRange;

}

// code calculating the total rainfall in the array
public static double getTotal(double[] thenumbers) {

double sum = 0;
for (double thenumber : thenumbers) {
sum += thenumber;
}
double theTotal = sum;
return theTotal;

}

}

最佳答案

您将最小值的初始值设置为 0

由于没有数据小于 0,因此最小的值永远不会被设置为另一个数字。

我建议不要将值设置为零,而是按照原始代码片段中的操作并将其设置为数组的第一个值

double smallest = thenumbers[0];

您也在 getLargest 函数中执行相同的操作,因此如果列表中的最大数字为负数,它将返回 0。

作为额外的好处,您还可以使用 for in/each 运算符来压缩代码一点 :

//code calculating the smallest number in the array
public static double getSmallest(double[] thenumbers) {

double smallest = thenumbers[0];

for (double num : thenumbers) {
if (num < smallest) {
smallest = num;
}
}

return smallest;
}

关于java - 从填充数组计算范围时出现问题(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53888146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com