以下是我写的作为问题答案的程序 -
“现在使用 ArrayList 和 Integer 包装类来存储值并通过使用 Scanner 类从控制台读取输入来初始化元素。扩展程序以识别 ArrayList 中的 n 个最大值。”
import java.util.ArrayList;
import java.util.Scanner;
public class ArraylistInput {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<Integer> val = new ArrayList<Integer>();
Scanner in = new Scanner(System.in);
System.out.println("Enter the length of you Array List ");
int nos = in.nextInt();
// Recorrd the input numbers
for (int i = 0 ; i < nos; i++)
{
System.out.println("Enter values for the ArrayList ");
int Input = in.nextInt();
val.add(Input);
}
// Display the arraylist
for (int j = 0; j < nos; j++)
{
int x = val.get(j);
System.out.println("Index " + (j+1) + ": " + x);
}
System.out.println("How meny maximmum values do you want? ");
int max =0; // initial max value
int nmax = in.nextInt(); // number of maximum values
int length = val.size(); // size of the arraylist
// finding the maximum values in ascending order without sorting
for (int h = 1; h <= nmax ; h++)
{
for (int k=0;k < length; k++)
{
if (val.get (k) > max)
{
max = val.get(k);
}
}
System.out.println ("maximmum = " + max);
int z = val.indexOf(max); // removing the higest value after printing
val.remove(z);
}
}
}
输出和错误:
输入数组列表的长度
3
输入 ArrayList 的值
12
输入 ArrayList 的值
45
输入 ArrayList 的值
8
索引 1:12 索引 2:45 索引 3:8
你想要多少个最大值?
2
最大值 = 45
线程“主”中的异常最大值 = 45 java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.ArrayList.elementData(Unknown Source) at java.util.ArrayList.remove(Unknown Source) at ArraylistInput.main(ArraylistInput.java: 46)