试图将我的头围绕3嵌套if ifments

Jer*_*phy 0 java if-statement

假设我有一个包含5个字符串的数组,与该数组相关的是3个整数数组,大小相同.eg`

String a[] = new String[5]
int x[] = new int[5]
int y[] = new int[5]

int z[] = new int[5]
Run Code Online (Sandbox Code Playgroud)

所以a [0],x [0],y [0],z [0]都与同一事物有关.我想找出x []中哪个索引保持最高数字.如果不止一个具有相同的最高数量,那么哪个具有最高数量y []并且如果存在多个具有相同最高数量的那个具有最高数量z [](可以安全地假设没有在z []中具有相同的最大值

我试着尽力解释..

如果只检查前两个条件,这是最好的

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

if(x[i]>=maximum){
if(x[i]==maximum)
{
    if(y[i]>=maximum)
    {
        maximum=x[i];
        winner=a[i];
        maximum=y[i];
    }
}
else
{
    maximum=x[i];
    winner=teams[i];
    maximum=y[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

所以这是我的新代码

static int compareValues(){
for (int i=0; i<a.length; i++){
        int max =0;
        int diff = x[i] - x[max];
        if (diff == 0){
            diff = y[i] - y[max];   
        }
        if (diff == 0){
            diff = z[i] - z[max];
        }
        if (diff > 0){
         max = i    
        }
}
return max;
Run Code Online (Sandbox Code Playgroud)

}

Old*_*eon 5

如果String[n]它与int[n]每个n 的s 相关,那么你应该正确地组合它们,制作它们Comparable并对它们进行排序.

class Thing implements Comparable<Thing> {

    final String a;
    final int x;
    final int y;
    final int z;

    public Thing(String a, int x, int y, int z) {
        this.a = a;
        this.x = x;
        this.y = y;
        this.z = z;

    }

    @Override
    public int compareTo(Thing o) {
        int diff = o.x - x;
        if (diff == 0) {
            diff = o.y - y;
        }
        if (diff == 0) {
            diff = o.z - z;
        }
        return diff;
    }

    @Override
    public String toString() {
        return "{" + a + "," + x + "," + y + "," + z + "}";
    }
}

public static int max(Thing[] things) {
    // NB - This should really call compareTo.
    int max = 0;
    for (int i = 1; i < things.length; i++) {
        int diff = things[i].x - things[max].x;
        if (diff == 0) {
            diff = things[i].y - things[max].y;
        }
        if (diff == 0) {
            diff = things[i].z - things[max].z;
        }
        if (diff > 0) {
            // Higher
            max = i;
        }
    }
    return max;
}

public void test() {
    Thing[] things = new Thing[6];
    things[0] = new Thing("Hello", 1, 2, 3);
    things[1] = new Thing("There", 1, 2, 4);
    things[2] = new Thing("Everyone", 0, 2, 3);
    things[3] = new Thing("How", 9, 0, 3);
    things[4] = new Thing("Are", 8, 9, 3);
    things[5] = new Thing("You", 7, 2, 3);
    System.out.println("Before: " + Arrays.toString(things));
    System.out.println("Max: " + things[max(things)]);
    Arrays.sort(things);
    System.out.println("Sorted: " + Arrays.toString(things));
}
Run Code Online (Sandbox Code Playgroud)