Hinweis: Ich bin dies auf Netbeans laufen 8.2 und Windows 7kann nicht richtig in Zeichen lesen mit 'Scanner' und '.next() charAt (0).'
Dieses Programm für die Benutzereingabe fragt, Sie können ein Zeichen eingeben, die Leertaste drücken oder einen Punkt eingeben, um das Programm anzuhalten.
1) Wenn I ein Zeichen I die folgende Fehlermeldung eingeben: "You entered a java.util.Scanner[delimiters=\p{javaWhitespace}+][position=1][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q8\E]"
2) Wenn ich die Leertaste komme ich keine Rückmeldung, bis ich einen Zeitraum eingeben und I erhalten dann eine Fehlermeldung wie oben aber das Programm hört auf.
3) Wenn ich einen Punkt eingeben, bekomme ich auch eine ähnliche Fehlermeldung, aber das Programm stoppt.
Was ich erwarte ist folgende: a) wenn ich die Leertaste eine Meldung zurück, sagt, dass ich die Leertaste und erhöhe beiden Zähler b) wenn ich ein Zeichen eingeben, dann gibt es eine Meldung, das eingegebene Zeichen und erhöht die ctr
Zähler c) wenn eine Periode eingegeben wird dann gibt er eine Nachricht, dass plus die Anzahl, wie oft sagen, um das Programm zu stoppen
ich vermute, das Problem mit der keystroke = userInput.next().charAt(0);
Aussage. Ich dachte, mit userInput.next().charAt(0)
würde funktionieren, weil sie alle einzelne Tastenanschläge und Zeichen sind. Der Raum ist ein Charakter, richtig? Falsch? Also, wenn jemand mir in die richtige Richtung zeigen könnte, um das zu beheben, würde das geschätzt werden.
/* reads a char, a space, or a period from keyboard, returns user input,
counts number of spaces and total number of entries */
package ch03_36_exercise_01;
import java.util.Scanner;
public class Ch03_36_Exercise_01 {
public static void main(String args[]) throws java.io.IOException {
Scanner userInput = new Scanner(System.in);
char keystroke; // character that user enters
int ctr = 0, spaces = 0; // num of tries to stop run, num of spaces entered
do {
// ask for user input
System.out.print("Enter a character, or hit the space bar," +
" or enter a period to stop: ");
keystroke = userInput.next().charAt(0);
if (keystroke == ' ') {
System.out.println("You entered a space");
spaces++; // increment space bar count
}
else
System.out.println("You entered a " + keystroke);
// increment keystroke count
ctr++;
}
while (keystroke != '.');
System.out.print("It took " + ctr + " tries to stop");
if (spaces > 0)
System.out.println(" and you hit the space bar " + spaces + " times\n");
else
System.out.println();
}
}
'sonst System.out.println ("Sie trat ein" + userinput);' ---> diese 'sonst System.out.printin ändern (“ Sie haben einen "+ Tastendruck" eingegeben; ' –