我制作了一个辅助方法来对其中带有数字的数组进行排序。
然后,我在“ main”方法中调用该方法,并使其返回使用string.format的格式。
当string.format部分位于for循环之外和if语句之外时,此代码有效,但是当它告诉我时,如果在其内部,i不返回任何内容。
我知道问题可能与我的if语句有关,但是我在寻找解决方案时遇到困难。
public static String getSmallestSalaryString(String[] names, int[] ages, double[] salaries) {
String str= "";
String str2="";
String str3="";
double[] sal= smallestSal(salaries);
for(int i= 0; i < sal.length; i++) {
if(sal[i]== 0) {
str= String.format("Smallest salary:$%,.2f, Name:%s, age:%d" , sal[0], names[0], ages[0]);
return str;
}
else if(sal[i]== 1) {
str2= String.format("Smallest salary:$%,.2f, Name:%s, age:%d" , sal[1], names[1], ages[1]);
return str2;
}
else if(sal[i] == 2) {
str3= String.format("Smallest salary:$%,.2f, Name:%s, age:%d" , sal[2], names[2], ages[2]);
return str3;
}
}
return str;
}
public static double[] smallestSal(double[] salaries) {
Arrays.sort(salaries);
return salaries;
}
答案 0 :(得分:0)
由于要遍历数组,因此应将sal [0],names [0],ages [0]更改为sal [i],names [i],ages [i]。
for(int i= 0; i < sal.length; i++) {
if(sal[i]== 0) {
str= String.format("Smallest salary:$%,.2f, Name:%s, age:%d" , sal[i], names[i], ages[i]);
return str;
}
答案 1 :(得分:0)
排序后,您在第一要素(索引0)中得到的薪水最少。然后,您应该在原始数组中找到该值的实际索引,并从该索引中获取详细信息。因此,您的代码应进行如下修改。
<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>
<h1><?php echo $term->name; ?></h1>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php $meta = get_post_meta( $post->ID, 'jas_flashcards_fields', true ); ?>
<h3><?php if (is_array($meta) && isset($meta['word1'])){ echo $meta['word1']; } ?> / <?php if (is_array($meta) && isset($meta['word2'])){ echo $meta['word2']; } ?></h3>
<?php endwhile; ?>
<?php endif; ?>
答案 2 :(得分:0)
该解决方案要求您找到“地址”而不是“内容”。
我在这里假设salaries
包含所有雇员的工资,names
是他们的名字,ages
是他们的年龄。我还假设ages
,names
和salaries
具有相同的大小,并且每个索引相关。然后使用这些信息,构造一个字符串以指示公司中薪水最低的员工。
由于这些信息均未包含在单个对象中,因此您只需要找到最低工资 INDEX 。有了这些信息,您可以通过访问ages[INDEX]
和names[INDEX]
来给出他/她的姓名和年龄。
您当前正在做的是找到最低薪水,然后在循环中猜测其INDEX,这将更加复杂。相反,在您的方法“ smallestSal”中,获取薪水最小的数组中的INDEX。然后,您的循环变得简单了。见下文,我的意思。
public static String getSmallestSalaryString(String[] names, int[] ages, double[] salaries) {
int lowestSalaryIdx= getLowestSalaryIndex(salaries);
return String.format("Smallest salary:$%,.2f, Name:%s, age:%d" , salaries[lowestSalaryIdx], names[lowestSalaryIdx], ages[lowestSalaryIdx]);
}
public static int getLowestSalaryIndex(double[] salaries) {
int lowestSalaryIndex = 0;
double lowestSalary = Double.MAX_VALUE;
for(int i=0; i<salaries.length; ++i) {
if (salaries[i] < lowestSalary) {
lowestSalaryIndex = i;
lowestSalary = salaries[i];
}
}
return lowestSalaryIndex;
}