2014-07-23 114 views
0

我遇到問題了解爲什麼我的數組中的最小值返回的結果始終爲0.我檢查了幾個問題,但是因爲同樣的問題而無法使用這些解決方案,因爲我的數組是在一個方法中創建的,我的最小/最大值是用另一種方法計算的。數組的最小值返回爲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

你在等什麼? – bwegs

+0

如果您使用調試器逐步執行此代碼,您將立即看到發生了什麼。學習使用調試器是學習成爲程序員的重要組成部分。 –

+0

我期待min是用戶輸入的最小號碼。如果用戶寫入0,則只能爲0. 並且感謝David W!上週我剛剛開始學習Java,而我甚至沒有考慮過調試器。我一定會考慮這一點。我很驚訝我的導師還沒有提出它。 – SeverelyConfused

回答

7

這是因爲你有你的陣列,它們都初始化爲0。你通過所有這些迭代試圖找到最低的1500項,而不是僅僅通過你以前做的那些迭代明確填充。

在你計算最小的循環,改變

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

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

讓你只看你已經填充的條目。