我在找出为什么我的数组中的最小值的返回值最终为0时遇到了问题。我已经检查了几个问题同样的问题但是不能使用这些解决方案,因为我的数组是在一个中创建的方法和我的最小/最大值是用另一种方法计算的。
无论如何,我可以将我的最小/最大值保持在一个单独的方法中,并且仍然得到我的最小值的非零答案?此外,processSalesReport方法中有更多代码,但我将其删除,因为它无关紧要。提前谢谢!
import java.util.Arrays;
import java.util.Scanner;
public class CarSalesReport {
int sum;
int count = 0;
int[] num = new int[1500];
String ans = "";
Scanner userInput = new Scanner(System.in);
public CarSalesReport(Scanner input) {
String regex = "\\d+|done";
System.out.println("Type sales (type \"done\" when finished)");
do{
System.out.print("Sale Number " + (count + 1) + ": ");
ans = userInput.nextLine();
while(!ans.matches(regex)){
System.out.println("Please enter a positive number");
ans = userInput.nextLine();
}
if(!ans.equalsIgnoreCase("done")){
int ans1 = Integer.parseInt(ans);
num[count] = ans1;
count++;
}
}while(!ans.equalsIgnoreCase("done"));
}
public void processSalesReport(){
int max = num[0];
for(int a=0;a<num.length;a++){
if(max<num[a]){
max=num[a];
}
}
//This is where I'm having my problems.
int min = Integer.MAX_VALUE;
for(int a=1;a<num.length;a++){
if(min>num[a]){
min=num[a];
}
}
Arrays.sort(num);
System.out.println("\nMaximum sale: $" + max);
System.out.println("\nMinimum sale: $" + min);
}
}
答案 0 :(得分:7)
这是因为你的数组中有1500个条目,它们都被初始化为0.你正在迭代所有这些条目试图找到最小值,而不是只是迭代你明确填充的那些。 / p>
在计算最小值的循环中,更改
for (int a = 1; a < num.length; a++) {
到
for (int a = 0; a < count; a++) {
这样您只需查看已填充的条目。