Java在数组中找到位置?

时间:2014-03-31 16:28:11

标签: java arrays minimum

所以我必须在Java中找到数组中的最小值,但是我必须在另一个并行数组中打印出最小化的相应名称。在我找到最小值的for循环中,我有一个变量位置,当最小值改变时,我设置的变量等于我的for循环中的变量。但每次打印出名称时,它都会打印出数组中的第一个名称,而不是占位符中的名字。

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;
}

在程序员定义的类中找到最小的for循环。

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

这是我用来从那个地方的名字数组中找出名字的代码。我究竟做错了什么?我是Java的新手,但我之前用C ++做过所有这些数组的东西,所以如果我遗漏了一些非常简单的东西,或者它在Java中的不同,那就是idk。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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]);
}

然而,遵循面向对象的方法,流氓解决方案更加出色!!!