Java 比较数组的元素

Java 比较数组的元素,java,arrays,Java,Arrays,假设我有一个数组v1[]={1,3,4,5}和v2[]={5,3,4,6}。我想比较v1和v2的元素,得到最大值作为输出(最佳解决方案)。如果V1和V2是数组的长度 我试过了 for(i=0;i=0;i--)//用于v1中的项 for(k=V2;j>=0;j--)//对于V2中的项 如果(v1[i],您可以简单地对两个数组进行排序,并获得最大(最后一个索引元素)值,然后像这样比较它们 int[] v1= {1, 3, 4, 5}; Arrays.sort(v1); int v1Max = v

假设我有一个数组
v1[]={1,3,4,5}
v2[]={5,3,4,6}
。我想比较v1和v2的元素,得到最大值作为输出(最佳解决方案)。如果V1和V2是数组的长度 我试过了

for(i=0;i=0;i--)//用于v1中的项
for(k=V2;j>=0;j--)//对于V2中的项

如果(v1[i],您可以简单地对两个数组进行排序,并获得最大(最后一个索引元素)值,然后像这样比较它们

int[] v1= {1, 3, 4, 5};
 Arrays.sort(v1);
 int v1Max = v1[v1.length-1];

 int[] v2 = {5, 3, 4, 6};
 Arrays.sort(v2);
 int v2Max = v2[v2.length-1];
 if(v1Max>v2Max) { 
 System.out.println(v1Max);
  }
  if(v2Max>v1Max) {
      System.out.println(v2Max);
   }

如果希望两个数组中都存在最大元素,可以尝试以下操作:

int max = v1[0];

for(int index = 1; index < v1.length; index++){
    if(v1[index] > max)
        max = v1[index];
}
System.out.println("v1 = "+max);

max = v2[0];
for(int index = 1; index < v2.length; index++){
    if(v2[index] > max)
        max = v2[index];
}
System.out.println("v2 = "+max);
int max=v1[0];
对于(int index=1;index最大值)
max=v1[指数];
}
System.out.println(“v1=“+max”);
max=v2[0];
对于(int index=1;index最大值)
max=v2[指数];
}
System.out.println(“v2=“+max”);

即使你的循环和不工作的东西可能会按原样工作(我真的不知道,因为我不想浪费时间……其他人已经回答了这个问题),你的循环也不会正常工作,因为你没有大括号

因为for循环和if语句中有多行,所以必须有它们

for(i = 0; i <=n; i++) { //for items of an array

    for( j = V1; i >= 0; i--) { //for items in v1

        for( k = V2; j >= 0; j--) { //for itemns in v2

            if(v1[i] <= j && v2[i] <= k) {
                int V1 = v1[i];
                int V2 = v2[i];
            }
        }
    }
}
for(i=0;i=0;i--){//for v1中的项
对于(k=V2;j>=0;j--){//对于V2中的项

如果(v1[i]如您所述,您希望分别获得每个循环的最大值,那么您需要的是:

int maxInV1 = v1[0];
for(int index = 1; index < v1.length; index++) {
    if(v1[index] > maxInV1) {
        maxInV1 = v1[index];
    }
}

int maxInV2 = v2[0];
for(int index = 1; index < v2.length; index++) {
    if(v2[index] > maxInV2) {
        maxInV2 = v2[index];
    }
}
int maxInV1=v1[0];
对于(int index=1;indexmaxInV1){
maxiv1=v1[索引];
}
}
int maxiv2=v2[0];
对于(int index=1;indexmaxiv2){
maxiv2=v2[索引];
}
}
请注意,有更有效的解决方案可用,但考虑到您的代码中存在的总体混乱,我认为您应该首先学习这一基本方法。我很抱歉地说,您在问题中发布的代码远不是解决方案,因为其中存在许多问题


还要注意的是,这是@Sujay答案的一个稍加修改的版本,只是使用了两个不同的变量。

您可能想提及您正在使用的语言…您应该知道只有行
int V1=V1[i];
在您的
if
条件中-行
int V2=V2[i];
超出了它的范围。你能给出一些示例输出吗。你只是想要两个数组的并集的最大值吗?@shiro chan为什么要这样做?只需使用两个循环。我建议你编写一个
max()
method,它返回单个数组的最大元素。然后,您可以对两个数组调用此方法,同时只编写一次代码来查找最大值。我可能建议不要为了得到最大元素而对整个数组进行修改。@oldrinb是的,我只是展示了一个非常基本的so我可以用一个简单的注释说与你在整个答案中所说的相同的话:使用大括号
{
}
谢谢你的陈述。你的其余答案几乎没有帮助。正如OP在上面的评论中所说:
我希望我的输出为v1=5和v2=6,因为它们都是数组中最大的项
。我添加了另一个答案,它将不同数组中的最大值分开。@SimonAndréForsberg:谢谢你的提醒,我没有深入到评论部分来回答这个问题:)更新了!
int maxInV1 = v1[0];
for(int index = 1; index < v1.length; index++) {
    if(v1[index] > maxInV1) {
        maxInV1 = v1[index];
    }
}

int maxInV2 = v2[0];
for(int index = 1; index < v2.length; index++) {
    if(v2[index] > maxInV2) {
        maxInV2 = v2[index];
    }
}