【发布时间】:2020-03-19 05:33:47
【问题描述】:
这是我为了好玩而做的一项学校作业。在这个作业中,我应该在 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);
}
}
【问题讨论】:
-
我建议在谷歌上搜索“冒泡排序”这个短语。这是更简单的排序技术之一。在搜索中添加“java 示例”可能会给您一个示例。
-
您可以使用排序算法而不是使用方法。这些包括遍历 ArrayList 并根据您设置的参数(例如最小到最大或按字母顺序排列)比较其中的对象(基本上是一样的,只有一个是数字,另一个是字符串)。一些更简单的方法包括冒泡排序、插入排序和选择排序。
-
我尝试使用 temp 进行冒泡排序,但它给了我一个错误,说左手必须是一个变量。我不知道如何解决它。
-
这意味着赋值运算符左边的任何东西
=必须是一个变量。使用words.get(j)是一个访问器并返回一个值。这样做时,您实际上无法改变索引 j 处的值,因此使用=将不起作用。您可以使用words.set(j, temp)设置索引 j 处的值。.set是一个 mutator 方法,允许您更改索引 j 处的值。希望这会有所帮助! -
我试过了,编辑已发布。但问题是,words.set(i,j);不工作。你知道为什么吗?
标签: java string arraylist swap