2017-06-27 6 views
0

これは非常に新しく、forループでこれを行うことができましたが、割り当てにはwhileループが必要です。私はそれがどのようにすべきかを動作していない以下を試しました。助けてください!このようなwhileループを使って文字列内の特定の文字を数える方法Loop - Java

package charcounter; 

import java.util.Scanner; 

public class CharCounter { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     char userChar = '0'; 
     String inputEntry = ""; 
     String inputCharacter = ""; 
     int foundOccurrences = 0; 

     System.out.print("Please enter one or more words: "); 
     inputEntry = in.nextLine(); 

     System.out.print("\nPlease enter one character: "); 
     inputCharacter = in.next(); 
     userChar = inputCharacter.charAt(0); 

     while (foundOccurrences < inputEntry.length()) { 
      if (userChar == inputEntry.charAt(0)) { 

      } 

      System.out.println("There is " + foundOccurrences + " occurrence(s) of " + inputCharacter + " in test."); 

      foundOccurrences++; 
     } 

    } 

} 
+0

あなたが最初の文字だけを比較しています。 –

+0

ループ状態がオフに見えます。あなたは常に、指定された文字が見つかった回数をインクリメントします。 1つはループし、もう1つは指定された文字が何回発生するかを数える変数を作成します。 – Mrl0330

+0

for-loopを使用してソリューションのコードを投稿してください。正しい方向を指し示すことができます。 – luizfzs

答えて

2

何か:

 int i = 0; 
     while (i < inputEntry.length()) { 
      if (userChar == inputEntry.charAt(i++)) { 
       foundOccurrences++; 
      } 
     } 
     System.out.println("There is " + foundOccurrences + " occurrence(s) of " + inputCharacter + " in test."); 

は、バグを修正し

+0

ありがとう、あなたはどのように私はユーザーが1文字を入力したテストを追加するか知っていますか? – Steph78

1

あなたは本当にあなたがprogrammer.Youとしてこのことから多くのことを利益を試してみて、デバッグプログラムをし、解決策を見つけることを試みる必要がありますあなたのコードに2つの問題があります 1.入力テキストに同じ文字が常にテストされます 2. foundOccurrences変数はオカレンスカウンターのように使用されず、代わりにインクリメントされます。単純なゾルあなたのために:

0

等価性をチェックするために、文字列の文字を1つずつ調べるのに役立つインデックス変数iを使用することができます。 のような何か:

しばらく(I < inputEntry.length()){ ... I ++; }

0

与えられた文字が文字列で見つかった場合は、カウントを維持するための1つの文字列を反復処理するためにループカウンタを維持するための指標と
foundOccurrencesカウンター。

もう片方の方法からチェックする方法。

int start =0; 
     int end=inputEntry.length()-1; 
     while (start < end) { 
      if (userChar == inputEntry.charAt(start)) { 
       foundOccurrences++; 
      } 
      if (userChar == inputEntry.charAt(end)) { 
       foundOccurrences++; 
      } 
      start++; 
      end--; 
     } 

バグ修正:

public static void main(String[] args) { 
      Scanner in = new Scanner(System.in); 
      char userChar = '0'; 
      String inputEntry = ""; 
      String inputCharacter = ""; 
      int foundOccurrences = 0; 

      System.out.print("Please enter one or more words: "); 
      inputEntry = in.nextLine(); 

      System.out.print("\nPlease enter one character: "); 
      inputCharacter = in.next(); 
      userChar = inputCharacter.charAt(0); 
      int index = 0; 
      while (index < inputEntry.length()) { 
       if (userChar == inputEntry.charAt(index)) { 
        foundOccurrences++; 
       } 
       index++; 
      } 
      System.out.println("There is " + foundOccurrences + " occurrence(s) of " + inputCharacter + " in test."); 
     } 
+0

ありがとう、あなたはどのように私はユーザーが1文字を入力したテストを追加するか分かりますか? – Steph78

関連する問題