【问题标题】:Java finding place in an array?Java在数组中找到位置?
【发布时间】:2014-05-11 02:44:11
【问题描述】:

所以我必须在 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 中的不同之处,那就别想了。

【问题讨论】:

  • 没有足够的代码来断言 a/place 的身份 b/执行顺序。也发布一些数据。
  • 你在哪里定义place?你的主要方法是什么样的?

标签: java arrays minimum


【解决方案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;
}

【讨论】:

    【解决方案2】:

    试试这个:

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

    但是,遵循面向对象的方法流氓解决方案要好得多!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2022-06-19
      • 2013-01-28
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多