数组的最小值返回0

时间:2014-07-23 00:24:07

标签: java arrays min

我在找出为什么我的数组中的最小值的返回值最终为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);

}
}

1 个答案:

答案 0 :(得分:7)

这是因为你的数组中有1500个条目,它们都被初始化为0.你正在迭​​代所有这些条目试图找到最小值,而不是只是迭代你明确填充的那些。 / p>

在计算最小值的循环中,更改

for (int a = 1; a < num.length; a++) {

for (int a = 0; a < count; a++) {

这样您只需查看已填充的条目。