我如何获得此for循环工作?

时间:2018-08-19 17:48:20

标签: java arrays for-loop if-statement string.format

我制作了一个辅助方法来对其中带有数字的数组进行排序。

然后,我在“ 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;
}

3 个答案:

答案 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是他们的年龄。我还假设agesnamessalaries具有相同的大小,并且每个索引相关。然后使用这些信息,构造一个字符串以指示公司中薪水最低的员工。

由于这些信息均未包含在单个对象中,因此您只需要找到最低工资 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;
}