このプログラムでは、配列要素と配列要素のサイズはユーザーから取得されます。ユーザー提供の整数配列から1,2,3番目に大きい番号
このコードは、すべてのI試みた場合ではなく、配列の大きさが4である場合、通過することと要素を通過している{5,5,5,2}
ここ出力5 5
なければなりませんしかし、私は得ている2 2 5
私はこの部分に問題があることがわかります。
else if((max1 == max2 && max2 == max3 && max1 == max3) && x[i] < max2)
{
max2 = x[i];
if(max2 < max3)
{
max3 = max2;
}
}
どのようにすればこの問題をアレイのみで解決できますか?コレクションにソリューションが必要ない。
import java.util.*;
class ThirdLargest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter size for array: ");
int size = sc.nextInt();
int[] x = new int[size];
for(int i = 0; i < x.length; i++)
{
System.out.println("Enter elements for array: ");
x[i] = sc.nextInt();
}
System.out.println("Array is: ");
for(int i = 0; i < x.length; i++)
{
System.out.print(x[i] +" ");
}
System.out.println();
if (x.length >= 3)
{
int max1 = x[0], max2 = x[0], max3 = x[0];
for (int i = 1; i < x.length; i++)
{
if(x[i] > max1)
{
max3 = max2;
max2 = max1;
max1 = x[i];
}
else if(x[i] > max2)
{
max3 = max2;
max2 = x[i];
}
else if (x[i] > max3)
{
max3 = x[i];
}
else if((max1 == max2 && max2 == max3 && max1 == max3) && x[i] < max2)
{
max2 = x[i];
if(max2 < max3)
{
max3 = max2;
}
}
else if(max2 == max3 && x[i] < max3)
{
max3 = x[i];
}
}
System.out.println("3rd, 2nd and 1st maximum: " + max3 +" "+max2+" "+max1);
}
else
{
System.out.println("Array size is short");
}
}
}