0

我已经定义了 16 个变量并为它们分配了不同类型的值。

int block0 = 5;
int block1 = 6;
int block2 = 8;
int block3 = 25;
int block4 = 8;
int block5 = 23;
int block6 = 2;
int block7 = 1;
int block8 = 6;
int block9 = 4;
int block10 = 5;
int block11 = 7;
int block12 = 15;
int block13 = 4;
int block14 = 5;
int block15 = 8;

我怎样才能找到所有使用 while 或 for 循环的最大变量?

4

4 回答 4

3

首先你必须把它们变成一个数组

int[] intArr = new int[16];

int[0] = 5;
int[1] = 6;
...

然后你可以迭代

int max = 0;
int maxIndex = 0;

for(int i=0; i<intArr.length; i++)
{
    if(max < intArr[i])
        maxIndex = i;
}
于 2013-05-17T00:09:54.900 回答
3

应该,但如果你不能使用数组,你可以使用Math.max(),就像这个漂亮的代码:

int max = Math.max(block0, Math.max(block1, Math.max(block2, Math.max(block3, Math.max(block4, Math.max(block5, Math.max(block6, Math.max(block7, Math.max(block8, Math.max(block9, Math.max(block10, Math.max(block11, Math.max(block12, Math.max(block13, Math.max(block14, block15)))))))))))))));

除非它们是类中的字段,否则您不能通过这些变量(局部变量)进行迭代(使用 a foror while,如您所说)。除了Math.max()是一个巨大的if声明,你唯一的选择。不过和它比起来,Math.max()还是挺漂亮的。

于 2013-05-17T00:12:56.037 回答
2

如果您真的不能使用数组,请制作自己的方法:

public static int maxValue(int... values) {
        int maximum = Integer.MIN_VALUE;

        for(int x : values)
            maximum = (x > maximum) ? x : maximum;

        return maximum;
    }

这样你就可以用多个参数调用它,例如。通过说

int max = maxValue(block0, block1, /*etc*/, block15);

@acdcjunior 具有多种 Math.max 方法的解决方案当然也有效。

于 2013-05-17T00:46:12.487 回答
0

这很容易..

做一个简单的排序..

function findlarge()
{
   var largest = 0;
   for (i = 0; i < 15; ++i)
   {
     largest = ((block+i) > block+(i+1)) ? block+i : block+i+1; 
   }
   return largest;
}

请注意,您需要解决我使用的不正确的变量名称..但这是我整理最大的..

祝你好运 :)

于 2013-05-17T00:09:48.970 回答