2016-11-11 8 views
0

Mein Code funktioniert, außer ich muss es passieren einige Junit-Test. Es geht alle außer einem. Es passiert, wenn der Charakter nichts eingibt, Großbuchstaben, Kleinbuchstaben oder eine Mischung aus den beiden, und es funktioniert, wenn die Eingabe Hello World!Eingabe der Benutzerzeichenfolge. Zählen Zeichen

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int[] textArray = new int[26]; 

    System.out.print("Enter text: "); 
    readText(input, textArray); 
} 

public static void readText(Scanner input, int[]text){ 
    char letter = 0; 

    if (input.hasNext() == false) { 
     System.out.println(); 
    } 
    else { 
     while (input.hasNext()) { 
      String a = input.nextLine(); 

      for (int i = 0; i < a.length(); i++) { 
       letter = a.charAt(i); 

       if (letter >= 'A' && letter <= 'Z') { 
        text[letter-65] = (text[letter-65]) + 1; 
       } 
       else if (letter >= 'a' && letter <= 'z') { 
        text[(letter - 32) - 65] = (text[(letter - 32) - 65]) + 1; 
       } 
       else if (letter == ' ') { 
        System.out.print(""); 
       } 
       else { 
        System.out.print(""); 
       } 
      } 
     } 
    } 

    String[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; 

    for (int y = 0; y < text.length; y++) { 
     if (text[y] > 0) { 
      System.out.println(alphabet[y] + ": " + text[y]); 
     } 
    } 
} 

Der Junit testet diesen Eingang: 1 2 3% n! ? >% N :) !!% n

Die erwartete Ausgabe ist

Enter text: 
    //empty line here 

Aber anstatt die Ausgabe von meinem Code ist

Enter text: //with no line after 

Ich bin nicht sicher, wie die zusätzliche Linie zu bekommen nachdem ich meine anderen Junit-Tests ruiniert habe. Ich versuchte es in einer Richtung und es funktionierte, aber dann funktionierte meine Hello World nicht richtig.

Und Beispiel, wenn seine Arbeits:
Wenn ich die Konsole laufen treffen wird sagen

Text eingeben:

Ich habe einen Scanner-Eingang, so dass die Benutzer einige Wörter eingeben und es wird wie folgt aussehen in Konsole

Text eingeben: Ein paar Worte

Dann wird es zählen wurde die Anzahl der einzelnen Buchstaben verwendet und Druck, der 01 ähnliche

zu trösten

Text eingeben: Einige Wörter
D: 1
E: 1
M: 1
O: 2
R: 1
S: 2
W: 1

Wenn I don ‚t etwas eingeben, wenn Sie gefragt und drücken Sie einfach die Enter-Taste die Ausgabe

Text eingeben:
// leere Zeile hier

Aber wenn ich eingeben

Text eingeben: 1 2 3
? ! >
:) !!

Der Ausgang fügt am Ende keine zusätzliche Zeile hinzu.

+0

Verwenden Sie System.out.println ("Text eingeben:") anstelle von System.out.print ("Text eingeben:"). –

+0

'System.out.println (" Text eingeben: "+" \ n ");' Sie möchten nach "Text eingeben" eine neue Zeile einfügen. Wenn Sie es auch tabgen möchten, können Sie 'System.out verwenden.println ("Text eingeben:" + "\ n \ t"); ' – Munib

+0

@ return0 Das geht nicht, weil die Benutzereingabe in derselben Zeile sein muss wie" Text eingeben: " – Jay58t

Antwort

1

Versuchen Sie es mit System.out.println("Enter text: "); statt System.out.print("Enter text: ");

Update: Nach Ihrer Anforderung geklärt zu werden Ich schlage vor, den folgenden Code zu verwenden.

public static void readText(Scanner input, int[]text){ 
     char letter = 0; 

     while (input.hasNext()) { 
      String a = input.nextLine(); 

      for (int i = 0; i < a.length(); i++) { 
       letter = a.charAt(i); 

       if (letter >= 'A' && letter <= 'Z') { 
        text[letter-65] = (text[letter-65]) + 1; 
       } 
       else if (letter >= 'a' && letter <= 'z') { 
        text[(letter - 32) - 65] = (text[(letter - 32) - 65]) + 1; 
       } 
       else if (letter == ' ') { 
        System.out.print(""); 
       } 
       else { 
        System.out.print(""); 
       } 
      } 
     } 

     String[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; 

     boolean emptyOutput = true; 
     for (int y = 0; y < text.length; y++) { 
      if (text[y] > 0) { 
       System.out.println(alphabet[y] + ": " + text[y]); 
       emptyOutput = false; 
      } 
     } 
     if (emptyOutput) { 
      System.out.println(); 
     } 
    } 
+0

Ich bin schon müde. Ich kann das nicht, weil dann, wenn der Benutzer Text eingibt, er in der Zeile unter "Text eingeben:" steht, wenn er in der gleichen Zeile sein soll. – Jay58t

+0

warum fügen Sie keine System.out.println() hinzu; nach der Zeile, die Sie lesen Eingabe String a = input.nextLine(); – dammina

+0

Ich habe den Beitrag bearbeitet. Die letzten Abschnitte zeigen, wie die Ausgabe aussehen sollte – Jay58t

Verwandte Themen