2014-03-31 32 views
0

所以我必須在Java中找到數組中的最小值,但是我必須打印出與另一個並行數組中最小值相對應的名稱。在我的for循環中,我發現最小值的時候,我設置了一個變量,當最小值發生變化時,我將它設置爲等於來自for循環的計數器變量。但是每次我打印出名字時,它都會在數組中輸出名字,而不是名字。Java在數組中找到位置?

public double getMinimum(double[] money) 
{ 
    double lowest = money[0]; 

    for (int p = 0; p < money.length; p++) 
    { 
     if (money[p] < lowest) 
     { 
      lowest = money[p]; 
      place = p; 
     } 
    } 

    return lowest; 
} 

Theres for the循環在我的程序員定義類中找到最小值。

public String getFirstNameMin(String[] firstName) 
{ 
    String minFirstName;   
    minFirstName = firstName[place];   
    return minFirstName; 
} 

這是我使用的代碼來找出在那個地方的名字數組的名字。我究竟做錯了什麼?我對Java有點新鮮,但之前我在C++中完成了所有這些數組的東西,所以如果我缺少一些非常簡單的東西,或者Java中的東西不同,那麼idk。

+1

沒有足夠的代碼來聲明「place」b /執行順序的標識。發佈一些數據。 – njzk2

+0

你在哪裏定義'地點'?你的主要方法是什麼樣子? – Christian

回答

1

我要說嘗試製作一個單獨的類此包含用戶和金錢:

public class User { 

    private double money; 
    private String fname; 
    private String lname; 

    //getters/setters/constructors 

} 

然後從那裏你可以簡單地比較這些帳號:

public User getMinimum(User[] users) { 

    if (users.length <= 0) { 
     return null; 
    } 

    User lowest = users[0]; 
    for (int i = 1; i < users.length; i++) { 
     if (users[i].getMoney() < lowest.getMoney()) { 
      lowest = users[i]; 
     } 
    } 
    return lowest; 
} 
+0

+1面向對象的方法! :-) – Christian

0

試試這個:

public int getMinIndex(double[] money) 
{ 
    double min = money[0]; 
    int minIndex = 0; 

    for (int p = 0; p < money.length; p++) 
    { 
     if (money[p] < min) 
     { 
      min = money[p]; 
      minIndex = p; 
     } 
    } 

    return minIndex; 
} 

public static void main(String[] args) 
{ 
    double[] money; 
    String[] name; 

    //... init your arrays here! 

    int index = getMinIndex(money); 

    System.out.println("Min money = " + money[index] + "; name = " + name[index]); 
} 

但是,遵循面向對象的方法流氓解決方案更好!!!