Java 从2个阵列中的每个阵列中获取最大的数目

Java 从2个阵列中的每个阵列中获取最大的数目,java,Java,在我对Java的自学中,我试图从两个数组中的每一个数组中获得最大的数目 我不知道为什么要执行以下输出: Largest: 3 Largest: 8 Largest: 9 Largest: 23 Largest: 33 Largest: 41 Largest: 51 正确的输出应为: Largest: 23 Largest: 51 下面的代码如何获得最大的数字?因为getLargest1[i]>最大 等于getLargest1[i]>0,其中最大值=0 为什么最大的=getLargest1[i

在我对Java的自学中,我试图从两个数组中的每一个数组中获得最大的数目

我不知道为什么要执行以下输出:

Largest: 3
Largest: 8
Largest: 9
Largest: 23
Largest: 33
Largest: 41
Largest: 51
正确的输出应为:

Largest: 23
Largest: 51
下面的代码如何获得最大的数字?因为getLargest1[i]>最大

等于getLargest1[i]>0,其中最大值=0

为什么最大的=getLargest1[i]

你必须搬家

System.out.println("Largest: " + largest);
for循环之外的语句。比如:

for (int i = 0; i < getLargest2.length; i++)
{
    if (getLargest2[i] > largest)
    {
        largest = getLargest2[i];
      }
}
System.out.println("Largest: " + largest);

当然,最大的变量必须在第一次循环后重置。

您也可以这样做

  int[] getLargest1 = {3, 8, 4, 9, 5, 5, 23, 14};
  int[] getLargest2 = {33, 23, 41, 9, 17, 51, 23, 45};
  Arrays.sort(getLargest1);
  Arrays.sort(getLargest2);

 System.out.println("Largest values " + getLargest1[getLargest1.length-1]
                                    +" and "+getLargest2[getLargest2.length-1]);
输出:

 Largest values 23 and 51

您在错误的位置打印,您应该在循环外打印:

for (int i = 0; i < getLargest1.length; i++)
        {
            if (getLargest1[i] > largest)
            {
                largest = getLargest1[i];

            }
        }
        System.out.println("Largest: " + largest);

        largest = 0;

        for (int i = 0; i < getLargest2.length; i++)
        {
            if (getLargest2[i] > largest)
            {
                largest = getLargest2[i];
            }
        }

        System.out.println("Largest: " + largest);

我认为您只需要将系统println置于循环操作之外。

还有一种方法是-ArrayUtils org.apache.commons.lang3.ArrayUtils和Collections

    int[] getLargest1 = {3, 8, 4, 9, 5, 5, 23, 14};
    int[] getLargest2 = {33, 23, 41, 9, 17, 51, 23, 45};


    List a = Arrays.asList(ArrayUtils.toObject(getLargest1));
    System.out.println("Largest :"+Collections.max(a));

    List b = Arrays.asList(ArrayUtils.toObject(getLargest2));
    System.out.println("Largest :"+Collections.max(b));  
尝试未经测试:

final int largest1 = IntStream.of(getLargest1).max().getAsInt();
final int largest2 = IntStream.of(getLargest2).max().getAsInt();

return largest1 >= largest2 ? largest1 : largest2;

将打印stmt移到for循环之外。将每个打印语句移到for循环之后,并在第一个for循环之后将最大变量重置为0loop@BackSlash或者每个arraycall System.out.PrintLnMaximum+for循环后的第一个元素。在每次if条件为True时调用ti只会打印出最大的变量谢谢,@backslax。补充说:最大的也需要重置。它提供[I@5483cd没有ArrayUtils.toObjectarr而不是23
for (int i = 0; i < getLargest1.length; i++)
        {
            if (getLargest1[i] > largest)
            {
                largest = getLargest1[i];

            }
        }
        System.out.println("Largest: " + largest);

        largest = 0;

        for (int i = 0; i < getLargest2.length; i++)
        {
            if (getLargest2[i] > largest)
            {
                largest = getLargest2[i];
            }
        }

        System.out.println("Largest: " + largest);
    int[] getLargest1 = {3, 8, 4, 9, 5, 5, 23, 14};
    int[] getLargest2 = {33, 23, 41, 9, 17, 51, 23, 45};


    List a = Arrays.asList(ArrayUtils.toObject(getLargest1));
    System.out.println("Largest :"+Collections.max(a));

    List b = Arrays.asList(ArrayUtils.toObject(getLargest2));
    System.out.println("Largest :"+Collections.max(b));  
final int largest1 = IntStream.of(getLargest1).max().getAsInt();
final int largest2 = IntStream.of(getLargest2).max().getAsInt();

return largest1 >= largest2 ? largest1 : largest2;