我有一个我想解决的练习题。我在方法中接受了三个数组。姓名,年龄和工资。我将返回使用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];
}
}
答案 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 [] - 一个薪水
将最低指数设为&#34; pos&#34;
只需访问b [pos],c [pos]
更改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]);