質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

2033閲覧

指定の文字が出現した回数をカウントをしたい

samanaka

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/01/06 02:58

編集2021/01/06 03:10

タイトルのとおり指定の文字が出現した回数をカウントをしたいのですが、うまくカウントされません。

以下コード

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/01/06 03:06

EclipseやVisual Source Codeなどのデバッガーの類は使われていないのでしょうか。仮にデバッガーが無くても、途中途中の変数の値をSystem.out.printなどで出力することで意図通りに動作しているか確認できます。デバッグしましょう。
samanaka

2021/01/06 03:12

名前は聞いたことありましたがそんな便利なものだったのですか。学校ではデバッガーを使わない方針なようなので今初めて知りました。ありがとうございます。
m.ts10806

2021/01/06 03:16

デバッグ環境整えない状態でプログラミングはあり得ません。 もし単位のためだけなのであれば、学校の先生に聞くのが良いです。 単位取得の手伝いさせるのは「質問」ではないです。
dodox86

2021/01/06 03:20

「デバッガーを使わない方針」ならそれぞれで対応する必要があるでしょう。ある程度まではがんばってSystem.out.print()などで対応できます。要は、自分が書いたコードの途中途中で自分がコードを書いた意図通りに動いているかを確認することが大事、ということです。それが確認できない(どこの何を確認したら良いか分からない)のであれば、デバッガーを使ってもやはりデバッグできません。尚、EcliseやVisual Source Code、その他のIDEを使わなくても、jdbと言うJDKに同梱のデバッガーもあります。 https://docs.oracle.com/javase/jp/8/docs/technotes/tools/unix/jdb.html
samanaka

2021/01/06 03:23

単位取得のためではありません。ただ学校がそういう方針であり、dodox86さんがおっしゃったSystem.out.printなどの動作確認だけで学校は進んできたので初めて知ったということです。
dodox86

2021/01/06 03:24

「コードを書いた」→「動かした」→「思い通りに動かない」→「なぜか/どう直したら良いか教えて」ではデバッグの丸投げ、ということになってしまいます。
dodox86

2021/01/06 03:28

デバッガーが使えないのはつらいですが、ただ使えば良いってものでもないので、デバッガーが使えないなかでどれだけ机上デバッグ(頭)とprint出力デバッグ(目での確認)で解決できるか、それなりに得るものはあると思います。
guest

回答3

0

display()で表示してから
count()で数えているように見えますが、
逆ではないでしょうか?

投稿2021/01/06 03:27

norapomu

総合スコア224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

momon-gaさんが既に指摘されていますが、

Java

1 cs.display(str); 2 cs.count(str);

上記の通りならば、カウントする前に表示が実行されています。

投稿2021/01/06 03:23

javahack

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

cs.display(str); cs.count(str);

は、結果的に

cs.display(str); // cs.count(str);

表示結果は、同じになるとか思いますが・・・
カウントは、されていると思いますよ。

投稿2021/01/06 03:16

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問