为什么我的输出在应该是最后一次重复两次沃尔特·迪斯尼的情况下

时间:2019-05-05 04:13:17

标签: java computer-science

我必须显示具有最高总收入和最低总收入的分销商。这是我的代码,它显示的最低,但是两次显示沃尔特·迪士尼,然后在第三个显示正确的答案。我该如何解决?

我尝试将打印内容置于循环之外,并且重复了10次以上,并且超出了循环循环,这给了我一个错误。

public void GEarnings (String [] d, int [] g){ 
    int high = 0;
    int low = 0;

    for(int index = 0; index < g.length; index++){
        if(d[index].equals("Walt Disney"))   {
            high += g[index]; 
            System.out.println("Highest Earnings - " + d[index] + " " + "$" + df.format(high));
        }
    }

    for(int index = 0; index < g.length; index++){
        if(d[index].equals("20th Century Fox")){
            low += g[index];         
            System.out.println("Lowest Earnings - " + d[index] + " " + "$" + df.format(low));
        } 
    }   


}

enter image description here

1 个答案:

答案 0 :(得分:0)

public void GEarnings(String[] d, int[] g) {
    int high = 0;
    int low = 0;

    for(int i = 0; i < g.length; i++) {
        if(g[i] > g[high]) high = i;
        if(g[i] < g[low]) low = i;
    }

    System.out.println("Highest earnings - " + d[high] +", lowest earnings - " + d[low]);
}

对于每个收入g[i],如果它高于索引存储在high中的收入,则将其替换。与low相同,如果较低,我们将其替换。

我们将索引i存储在highlow中,因此我们可以通过搜索d[high]d[low]来获得公司的名称。

注意:最好使用Map<String, Integer>来正确链接公司及其收入。