Bevor wir beginnen, glaube ich nicht, dass dies eine wiederholte Frage ist. Ich habe die Frage mit dem Titel StringTokenzer countTokens() returns 1 with any string gelesen, aber das spricht nicht die Tatsache an, dass eine richtig begrenzte Zeichenfolge korrekt gezählt wird, aber eine ordnungsgemäß begrenzte Eingabe nicht.countTokens() gibt immer 1 mit Benutzereingabe zurück
Bei Verwendung der StringTokenizer-Klasse habe ich festgestellt, dass die countTokens-Methode unterschiedliche Ergebnisse zurückgibt, je nachdem, ob das Argument in countTokens eine definierte Zeichenfolge oder eine benutzerdefinierte Zeichenfolge ist. Zum Beispiel gibt der folgende Code den Wert 4.
String phrase = "Alpha bRaVo Charlie delta";
StringTokenizer token = new StringTokenizer(phrase);
//There's no need to specify the delimiter in the parameters, but I've tried
//both code examples with " " as the delimiter with identical results
int count = token.countTokens();
System.out.println(count);
Aber dieser Code den Wert 1 gedruckt werden, wenn der Benutzer eingibt: Alpha bravo Charlie Delta
Scanner in = new Scanner(System.in);
String phrase;
System.out.print("Enter a phrase: ");
phrase = in.next();
StringTokenizer token = new StringTokenizer(phrase);
int count = token.countTokens();
System.out.println(count);
Werfen Sie einfach diese da draußen (aus der [docs] (https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html)): "* StringTokenizer ist eine Legacy-Klasse das wird aus Kompatibilitätsgründen beibehalten, obwohl ** seine Verwendung in neuem Code *** *** vermieden wird. Könnte in Betracht ziehen, 'String # split (String)' –
zu verwenden Ich schätze die Eingabe, aber ich bin verpflichtet, die StringTokenizer-Klasse für eine Klassenzuweisung zu verwenden. –