gpt4 book ai didi

java - 在 Java 中第 11 个用户输入后按字母顺序对字符串 ArrayList 进行排序

转载 作者:行者123 更新时间:2023-12-01 10:08:00 26 4
gpt4 key购买 nike

我有一个学校作业,其中我必须让用户输入名称,然后将其放入标题大小写中,然后按字母顺序排列。我的问题是,如果用户输入 11 个或更多名称,它们将不再按字母顺序排列。如果有人可以解释为什么会发生这种情况,并可能给我一些解决此问题的提示,我将非常感激。谢谢!

import java.util.Scanner;
import java.util.ArrayList;

public class Main
{
public static void main (String [] args)
{
ArrayList <String> names = new ArrayList <String>();

Scanner scan = new Scanner(System.in);

System.out.println ("Please Enter a Name. (Enter 'stop' to end)");
String g = scan.nextLine();
g = titleCase(g);
names.add(g);

while (!g.equals("Stop"))
{
System.out.println ("Please Enter a Name. (Enter 'stop' to end)");
g = scan.nextLine();
g = titleCase(g);
if (!g.equals("Stop"))
abcSort(g, names);
}

toString(names);
}

此方法将字符串返回为标题大小写。

  public static String titleCase(String s)
{
String firstLetter;
s = s.toLowerCase();
firstLetter = s.substring(0, 1);
s = firstLetter.toUpperCase() + s.substring(1, s.length());

return s;
}

这是我将名字按字母顺序排列的方法。

  public static void abcSort(String inputName, ArrayList <String> sorted)
{
String g;
for (int i = 0; i < sorted.size(); i++)
{
g = sorted.get(i);

if (inputName.compareTo(g) < 0)
{
sorted.add (i, inputName);
return;
}
else {
sorted.add(inputName);
return;
}
}
}

作业要求我还有一种方法来打印 ArrayList,这就是这个方法的作用

  public static void toString(ArrayList s)
{
System.out.println(s);
}
}

最佳答案

问题出在您的 abcSort 方法上。由于您在 ifelse 部分都 return,因此 for 循环不可能超出第一个字符串。如果该字符串不能位于任何其他字符串之前,则您希望将该字符串添加到该列表的末尾。目前,如果它不能到达第一个字符串之前,它就会到达末尾。您需要删除 else 并将行 sorted.add(inputName); 移至 for 循环之后。

更正后的版本是:

public static void abcSort(String inputName, ArrayList <String> sorted)
{
String g;
for (int i = 0; i < sorted.size(); i++)
{
g = sorted.get(i);

if (inputName.compareTo(g) < 0)
{
sorted.add (i, inputName);
return;
}
}
sorted.add(inputName);
}

好的IDE可以发现这样的问题。当我将您的版本粘贴到 IntelliJ IDEA 中时,for 循环变成可怕的棕色阴影,它告诉我问题:'for' 语句不循环

我不知道你从哪里得到数字 11。如果您输入 Anne, Chris, Bob, Stop,原始版本将失败。

关于java - 在 Java 中第 11 个用户输入后按字母顺序对字符串 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com