Java 如何在不使用Collections.sort方法的情况下按字母顺序排列此ArrayList?
这是我为了好玩而做的学校作业。在本作业中,我应该在ArrayList中插入单词,然后手动停止ArrayList,然后程序应该按字母顺序排列它。但问题是,每个教程都告诉我使用Collections.sort方法或其他方法,但我们在课堂上还没有学会,所以我们显然不打算使用它。此外,本作业的挑战是对1个ArrayList中的所有内容进行排序,而不是从ArrayList中提取单词,按字母顺序排列单词,然后将字母顺序排列的单词插入第二个ArrayList。有人能帮我解决这个问题吗?我没有在字母顺序部分写任何东西,因为我不知道从哪里开始。多谢各位Java 如何在不使用Collections.sort方法的情况下按字母顺序排列此ArrayList?,java,string,arraylist,swap,Java,String,Arraylist,Swap,这是我为了好玩而做的学校作业。在本作业中,我应该在ArrayList中插入单词,然后手动停止ArrayList,然后程序应该按字母顺序排列它。但问题是,每个教程都告诉我使用Collections.sort方法或其他方法,但我们在课堂上还没有学会,所以我们显然不打算使用它。此外,本作业的挑战是对1个ArrayList中的所有内容进行排序,而不是从ArrayList中提取单词,按字母顺序排列单词,然后将字母顺序排列的单词插入第二个ArrayList。有人能帮我解决这个问题吗?我没有在字母顺序部分写任
import java.util.*;
public class LexiHeaven {
public static void main(String[] args) {
ArrayList<String> words = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a word into the Array (enter stop if you want to stop):");
String w = sc.nextLine();
while (!w.equals("stop")) {
words.add(w);
System.out.println("Please enter a word into the Array (enter stop if you want to stop):");
w = sc.nextLine();
}
System.out.println(words);
System.out.println("Alphabetize the ArrayList:");
String temp = "";
for (int i = 0; i < words.size(); i++) {
for (int j = i + 1; j < words.size(); j++) {
if (words.get(i).compareTo(words.get(j)) > 0) {
temp = words.get(i);
words.set(i, words.get(j));
words.set(j, temp);
}
}
}
System.out.println(words);
}
}
import java.util.*;
公共类lexihaven{
公共静态void main(字符串[]args){
ArrayList words=新的ArrayList();
扫描仪sc=新的扫描仪(System.in);
System.out.println(“请在数组中输入一个单词(如果要停止,请输入stop):”;
字符串w=sc.nextLine();
而(!w.equals(“stop”)){
加上(w);
System.out.println(“请在数组中输入一个单词(如果要停止,请输入stop):”;
w=sc.nextLine();
}
System.out.println(字);
System.out.println(“按字母顺序排列数组列表:”);
字符串temp=“”;
for(int i=0;i0){
temp=单词。get(i);
words.set(i,words.get(j));
词.集(j,temp);
}
}
}
System.out.println(字);
}
}
看来我无法在评论中很好地解释自己,所以我会让我的代码替我说话
实现冒号排序的循环应如下所示:
字符串温度;
for(int i=0;i
请注意,由于您正在进行比较,因此这会按降序对列表进行排序,即
if(words.get(i).compareTo(words.get(j))<0{
如果需要升序,请将<0
更改为>0
我试图解释,在我的中,您没有在循环中为局部变量
temp
赋值。看起来我无法在注释中很好地解释自己,所以我会让我的代码替我说话
实现冒号排序的循环应如下所示:
字符串温度;
for(int i=0;i
请注意,由于您正在进行比较,因此这会按降序对列表进行排序,即
if(words.get(i).compareTo(words.get(j))<0{
如果需要升序,请将<0
更改为>0
在我的示例中,我试图解释您没有在循环中为局部变量
temp
赋值。让我们看看您编写的代码:
String temp;
for (int i = 0; i < words.size(); i++) {
for (int j = i + 1; j < words.size(); j++) {
if (words.get(i).compareTo(words.get(j)) < 0) {
words.set(i, temp);
words.set(i,j);
words.set(j, temp);
}
}
}
这里有几个问题:
temp
,因此此代码实际上会使用null
值“损坏”您的列表words.set(i,temp)
基本上“不做任何事情”,即使它做了正确的事情list=(a,b),temp=a
list=(b,b),temp=a
list=(b,a),temp=a
temp
变量和ArrayList代码,因此:
String temp;
for(...) {
for(...) {
if (...) {
temp = words.get(i);
words.set(i, words.get(j));
words.set(j, temp);
}
}
}
让我们看看您编写的代码:
String temp;
for (int i = 0; i < words.size(); i++) {
for (int j = i + 1; j < words.size(); j++) {
if (words.get(i).compareTo(words.get(j)) < 0) {
words.set(i, temp);
words.set(i,j);
words.set(j, temp);
}
}
}
这里有几个问题:
temp
,因此此代码实际上会使用null
值“损坏”您的列表words.set(i,temp)
基本上“不做任何事情”,即使它做了正确的事情list=(a,b),temp=a
list=(b,b),temp=a