タイトルのとおり指定の文字が出現した回数をカウントをしたいのですが、うまくカウントされません。
以下コード
Java
1 2import java.util.*; 3 4public class Main { 5 public static void main(String args[]) { 6 7 Scanner sc = new Scanner(System.in); 8 String str = sc.nextLine(); 9 10 CountCode cs = new CountCode(); 11 cs.display(str); 12 cs.count(str); 13 } 14} 15 16//文字カウント、表示するクラス 17class CountCode { 18 char ch[] = { 'e', 'd', 'c', 'b', 'a' }; 19 int count[] = new int[ch.length + 1]; 20 String str; 21 22 //文字列から各文字をカウント 23 public void count(String str) { 24 for (int i=0; i<str.length(); i++){ 25 for(int j=0; j<ch.length; j++){ 26 if(ch[j] == str.charAt(i)){ 27 count[j]++; 28 break; 29 } 30 } 31 } 32 } 33 34 //出力 35 void display(String str) { 36 System.out.println("入力された文字:" + str); 37 System.out.println("カウント結果"); 38 for (int i=count.length-1; i>0; i--) { 39 System.out.println(ch[i-1] + ":" + count[i] + "回" ); 40 } 41 } 42} 43```ここまで記述したのですが、どうしてカウントされないかがわかりません。どうか教えてください。 44追加情報 実行結果です。カウントメソッドがうまく動いていないと思われます。 45![イメージ説明](985233d2ef23194bc3d0db2da966c1b9.png)
> https://teratail.com/help/question-tips#questionTips3-4-1
> 「うまく動かない」というだけでは、何も伝わりません。
「○○がうまく動きません」とだけ書いても、今起きている事が伝わらなければ問題の見当がつかないのです。
EclipseやVisual Source Codeなどのデバッガーの類は使われていないのでしょうか。仮にデバッガーが無くても、途中途中の変数の値をSystem.out.printなどで出力することで意図通りに動作しているか確認できます。デバッグしましょう。
名前は聞いたことありましたがそんな便利なものだったのですか。学校ではデバッガーを使わない方針なようなので今初めて知りました。ありがとうございます。
デバッグ環境整えない状態でプログラミングはあり得ません。
もし単位のためだけなのであれば、学校の先生に聞くのが良いです。
単位取得の手伝いさせるのは「質問」ではないです。
「デバッガーを使わない方針」ならそれぞれで対応する必要があるでしょう。ある程度まではがんばってSystem.out.print()などで対応できます。要は、自分が書いたコードの途中途中で自分がコードを書いた意図通りに動いているかを確認することが大事、ということです。それが確認できない(どこの何を確認したら良いか分からない)のであれば、デバッガーを使ってもやはりデバッグできません。尚、EcliseやVisual Source Code、その他のIDEを使わなくても、jdbと言うJDKに同梱のデバッガーもあります。
https://docs.oracle.com/javase/jp/8/docs/technotes/tools/unix/jdb.html
単位取得のためではありません。ただ学校がそういう方針であり、dodox86さんがおっしゃったSystem.out.printなどの動作確認だけで学校は進んできたので初めて知ったということです。
「コードを書いた」→「動かした」→「思い通りに動かない」→「なぜか/どう直したら良いか教えて」ではデバッグの丸投げ、ということになってしまいます。
デバッガーが使えないのはつらいですが、ただ使えば良いってものでもないので、デバッガーが使えないなかでどれだけ机上デバッグ(頭)とprint出力デバッグ(目での確認)で解決できるか、それなりに得るものはあると思います。