私は、ユーザーに名前を入力させて、タイトルケースとアルファベット順に入れなければならない学校の割り当てを持っています。私の問題は、ユーザーが11以上の名前を入力すると、もはやアルファベット順になっていないということです。誰かがなぜこれが起こっているのかを説明して、これを修正するためのヒントを私にくれたら、本当に感謝します。ありがとう!Javaの11番目のユーザー入力の後に、文字列のArrayListをアルファベット順にソート
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;
}
}
}
割り当ても、この1つは問題があなたのabcSort
方法である
public static void toString(ArrayList s)
{
System.out.println(s);
}
}
サイドバーのコメント:最初に質問した後に名前を保存していません。 'while'ループの中に' names.add(g); 'が必要です。 – robotlos
問題は 'abcSort(...)'メソッドにあります。このメソッドは実際には2つのうちのどれかを実行できます:a)新しい文字列をリストの先頭に追加するか、またはb)新しい文字列をリストの末尾に追加する。なぜこのようなことが起こるか分かるならば、それを修正する方法を考えることができます。 – msandiford