Ich habe eine Aufgabe für die Schule, in der ich einen Benutzer Namen eingeben müssen, die dann in Titel und dann in alphabetischer Reihenfolge eingegeben werden. Mein Problem ist, dass wenn ein Benutzer 11 Namen oder mehr eingibt, sie nicht mehr alphabetisch werden. Wenn jemand erklären könnte, warum das passiert und vielleicht geben Sie mir ein paar Tipps, um das zu beheben, würde ich es wirklich zu schätzen wissen. Vielen Dank!Sortieren einer ArrayList von Strings in alphabetischer Reihenfolge nach der 11. Benutzereingabe in Java
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);
}
Diese Methode gibt die Zeichenfolge in den Titel zurück.
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;
}
Dies ist meine Methode, um die Namen in alphabetischer Reihenfolge zu setzen.
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;
}
}
}
Die Zuordnung erfordert mich auch ein Verfahren zu haben, das Arraylist zu drucken, das ist es, was diesen tut
public static void toString(ArrayList s)
{
System.out.println(s);
}
}
Sidebar-Kommentar: Sie speichern die Namen nicht nach dem ersten Mal, wenn Sie fragen. Sie benötigen einen 'names.add (g);' innerhalb Ihrer 'while' Schleife. – robotlos
Das Problem liegt in der 'abcSort (...)' Methode. Diese Methode kann wirklich nur eines von zwei Dingen tun: a) entweder füge die neue Zeichenkette am Anfang der Liste hinzu oder b) füge die neue Zeichenkette am Ende der Liste hinzu. Wenn Sie herausfinden können, warum dies passiert, sollten Sie in der Lage sein, herauszufinden, wie Sie das Problem beheben können. – msandiford