2016-11-11 9 views
0

私のコードは、Junitテストに合格する必要がある以外は動作します。それは1つを除いて全てを通過させる。それは、文字が何も入力しないで、大文字、小文字、または2つの組み合わせを入力すると、渡し、それは入力時に動作しますHello World!ユーザーストリング入力。文字数をカウントする

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]); 
     } 
    } 
} 

この入力をテストする:1 2 3%n! ? >%N :) !!%のn

期待出力が

Enter text: 
    //empty line here 

ですが、代わりに私のコードの出力は、私が余分な行を取得するかどうかはわかりません

Enter text: //with no line after 

です私の他のジュニットテストを台無しにしないで。私は一方的な方法を試してみましたが、うまくいきましたが、Hello Worldは正しく機能しませんでした。

と作業する場合の例:私はコンソールを実行打つとき

は、テキストを入力しますと言うだろう:

ユーザーはいくつかの単語を入力しますので、私はスキャナ入力を持っており、それは次のようになります。この

01のようにコンソールには回数をカウントします

その後

いくつかの単語の各文字を使用し、印刷:

コンソールにテキストを入力します。

入力テキスト:いくつかの単語
D:1
E:1
M:1
O:2
R:1
S:2
W:1

Iドン場合何かを入力してEnterキーを押すだけで、出力は


//空の行はこちら

しかし、私はテキスト入力

を入力してください:1 2 3
を? ! >
:)!

出力には最後に余分な行が追加されません。

+0

System.out.print( "Enter text:")の代わりにSystem.out.println( "テキスト入力:")を使用してください。 –

+0

'System.out.println("テキスト入力: "+" \ n ");' "テキスト入力"の後に新しい行が必要です。もしあなたもそれをタブしたいなら、あなたは 'System.out 'を使うことができます。 – Munib

+0

@ return0ユーザー入力が「テキスト入力」と同じ行になければならないため、これを行うことはできません。 – Jay58t

答えて

1

ではなくSystem.out.print("Enter text: ");

更新のSystem.out.println("Enter text: ");を使用してみてください:あなたの条件を明確に取得した後、私は次のコードを使用することを提案します。

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

私はすでにそれを疲れました。私はそれを行うことはできません。なぜなら、ユーザーがテキストを入力すると、同じ行にあるはずの「Enter text:」の行にあるからです。 – Jay58t

+0

System.out.println()を追加してください。入力を読み取った行の後の 文字列a = input.nextLine(); – dammina

+0

投稿を編集しました。最後のセクションで出力がどうなるかを示します – Jay58t

関連する問題