如何在同一对话框中显示直接输入和排序的ArrayList



有人能帮我在同一对话框中打印用户输入和排序的ArrayList吗(例如User input = **Toyota, Mazda, Ford**.Sorted input =**Ford, Mazda, Toyota**)

这是我第一次使用对话框。有没有其他工具我可以使用,或者我应该在单独的类中编写Collections.sort(auto);,然后在打印中插入它?

以下是代码的样子:

Scanner in = new Scanner(System.in);
ArrayList<String> auto = new ArrayList<>();
boolean done = false;
do {
String autoList = JOptionPane.showInputDialog(null, "Enter an Auto you like (q to finish):",
"click OK for each auto entry");
if (autoList.equalsIgnoreCase("q")) {
break;
}
auto.add(autoList);
} while (!done);
Collections.sort(auto);
JOptionPane.showMessageDialog(null, "Arra list " + auto
+ "n Sorted list is " + auto);
// should print straight user's input on one line and sorted Array list on the second line
in.close();

问题是,当您调用Collections.sort(list)时,列表会被排序,所以当您在消息框中打印两次auto时,它会打印两次排序后的列表。另外,返回类型是void,所以不能将其连接到字符串的末尾。这里可以看到一个例子。

Scanner in = new Scanner(System.in);
ArrayList<String> auto = new ArrayList<>();
boolean done = false;
do {
String autoList = JOptionPane.showInputDialog(null, "Enter an Auto you like (q to finish):",
"click OK for each auto entry");
if (autoList.equalsIgnoreCase("q")) {
break;
}
auto.add(autoList);
} while (!done);
System.out.println("auto: "+ auto);
Collections.sort(auto);
System.out.println("auto: "+ auto);
JOptionPane.showMessageDialog(null, "Arra list " + auto
+ "n Sorted list is " + auto);
// should print straight user's input on one line and sorted Array list on the second line
in.close();

输出:

auto: [Ford, Mazda, Toyota, BMW]
auto: [BMW, Ford, Mazda, Toyota]

打印到消息框时,列表已排序。一种选择是在排序之前复制未排序的列表,这样在排序之后就可以引用未排序的值。

下面是一个如何进行的例子

Scanner in = new Scanner(System.in);
ArrayList<String> auto = new ArrayList<>();
ArrayList<String> unsortedAutos = new ArrayList<>();
boolean done = false;
do {
String autoList = JOptionPane.showInputDialog(null, "Enter an Auto you like (q to finish):",
"click OK for each auto entry");
if (autoList.equalsIgnoreCase("q")) {
break;
}
auto.add(autoList);
} while (!done);

unsortedAutos = (ArrayList<String>) auto.clone();
Collections.sort(auto);
System.out.println("auto: "+ unsortedAutos);
System.out.println("auto: "+ auto);
JOptionPane.showMessageDialog(null, "Arra list " + unsortedAutos
+ "n Sorted list is " + auto);
// should print straight user's input on one line and sorted Array list on the second line
in.close();

输出:

auto: [Mazda, Ford, BMW]
auto: [BMW, Ford, Mazda]

最新更新