Java:通过另一个元素的索引查找元素

时间:2018-01-17 03:15:05

标签: java arrays

我有一个我想解决的练习题。我在方法中接受了三个数组。姓名,年龄和工资。我将返回使用string.format来显示薪水,名称和年龄

数组的长度相同,每个数组中的相应元素是相关的。我应该找到最小的薪水,并使用它来获得相应的姓名和年龄。

我能找到最小的薪水,但我对如何获得相应的名称和年龄感到困惑。

提前谢谢

编辑:如果我通过此代码找到了最小的薪水,那么获取此索引并使用该索引获取相应元素的功能是什么:

public static String getSmallestSalaryString(String[] names, int[] ages, double[] salaries ) {

double smallSal = Integer.MAX_VALUE;    

for(int i = 0; i < salaries.length; i++) {

    if(smallSal > salaries[i]) {
        smallSal = salaries[i];
    }       
}

4 个答案:

答案 0 :(得分:4)

你知道最小的薪水可以说是smallestSalary

// Find the index corresponding to the smallest salary
int index = -1;
for(int i=0; i<salaryArray.length; i++){
    if(salaryArray[i] == smallestSalary){
        index = i;
    }
}

现在你有了索引。所以只需返回/使用姓名,年龄。

System.out.println(nameArray[index]);
System.out.println(ageArray[index]);

但是拥有类似的数据会导致数据不一致。您可以让一个班级对每个人的相关信息进行分组。 Person类可以这么简单。

class Person{
   int age;
   String name;
   int salary;
}

答案 1 :(得分:2)

double smallSal = salaries[0];
int index = 0;

for(int i = 1; i < salaries.length; i++) {

    if(smallSal > salaries[i]) {
        smallSal = salaries[i];
        index = i;
    }       
}

由于假设最小值是第一个索引,因此可以节省少一倍的行程。

然后,使用索引访问该人的姓名和年龄。

不要忘记检查琐碎的事情,例如数组是否为空等等。

答案 2 :(得分:2)

假设你有数组a [],b [],c [] - 一个薪水

  1. 检查最低索引时,不要更改数组a []的顺序。
  2. 将最低指数设为&#34; pos&#34;

    只需访问b [pos],c [pos]

    1. 在查找最低索引
    2. 时更改数组a []中的值的顺序

      更改b [],c []的值同时更改[]的值并访问b [pos],c [pos]

答案 3 :(得分:2)

您可以返回salary数组的索引并使用相同的索引从另一个数组中获取名称和年龄。

public static int getSmallestSalaryIndex(double[] salaries) {

double smallSal = salaries[0];    
int index =0;
for(int i = 1; i < salaries.length; i++) {

    if(smallSal > salaries[i]) {
        smallSal = salaries[i];
        index =i;
    }       
}
   return index;
}

您应该按照方法名称编写实现,不要在同一方法中包含所有内容。您不需要将所有数组(年龄,姓名)传递给getSmallestSalaryIndex

int idx = getSmallestSalaryIndex(salaries);
System.out.printf("The person name %s is %d has salary %f", names[idx] ,ages[idx],salaries[idx]);