谁能帮助我在同一对话框中打印用户输入和对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]