文字のカウントとフィルタリング
実践的なchar操作を学びます。
「文字のカウントとフィルタリング」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
ループで数える
文字を数えるには、カウンター変数を用意し、条件に一致するたびに 1 を加えます。
カウンターを 0 で初期化し、すべての char をループで処理して、char が条件を満たしたらカウンターを増やしてください。
int count = 0;
for (char c : "hello".toCharArray()) {
count++;
}母音の数を数える
ここでは、各文字を母音の集合と照合して、母音の数を数えます。
最初に文字を小文字に変換するため、'A' と 'a' は同じように数えられます。
public class Main {
public static void main(String[] args) {
String text = "Java Rocks";
int vowels = 0;
for (char c : text.toCharArray()) {
char low = Character.toLowerCase(c);
if (low == 'a' || low == 'e' || low == 'i' || low == 'o' || low == 'u') {
vowels++;
}
}
System.out.println(vowels);
}
}数字の数を数える
String に含まれる数字の個数を数えるには、ループ内で Character.isDigit を使います。
これにより、文字や記号は自動的に無視されるため、数字の場合だけカウンターが増えます。
public class Main {
public static void main(String[] args) {
String text = "abc123x9";
int digits = 0;
for (char c : text.toCharArray()) {
if (Character.isDigit(c)) digits++;
}
System.out.println(digits);
}
}文字の数を数える
代わりに Character.isLetter を使うと、英字の数を数えられます。
構造は同じで、ループ、判定、インクリメントを行います。変わるのは条件だけです。
public class Main {
public static void main(String[] args) {
String text = "a1 b2 c3";
int letters = 0;
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) letters++;
}
System.out.println(letters);
}
}特定の文字を数える
特定の1文字を数えるには、各文字を == で比較します。
ここでは、テキスト内に文字 'a' が何回現れるかを数えます。
public class Main {
public static void main(String[] args) {
String text = "banana";
int aCount = 0;
for (char c : text.toCharArray()) {
if (c == 'a') aCount++;
}
System.out.println(aCount);
}
}文字をフィルタリングする
フィルタリングとは、必要な文字だけを残した新しい String を作成することです。
ここでは、結果の String に追加することで、文字と数字を残し、空白や句読点を取り除きます。
public class Main {
public static void main(String[] args) {
String text = "a-b 1!2";
String clean = "";
for (char c : text.toCharArray()) {
if (Character.isLetterOrDigit(c)) clean += c;
}
System.out.println(clean);
}
}StringBuilderを使う
長いループ内で += を使って String を構築すると、各ステップで新しい String が作成されるため遅くなります。
StringBuilder のほうが高速です。文字を追加し、最後に toString() を呼び出します。
public class Main {
public static void main(String[] args) {
String text = "H e l l o";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (!Character.isWhitespace(c)) sb.append(c);
}
System.out.println(sb.toString());
}
}空白を取り除く
よく使われるフィルターでは、Character.isWhitespace を使ってスペース、タブ、改行を取り除きます。
空白ではないすべての文字を残して、テキストを詰めます。
public class Main {
public static void main(String[] args) {
String text = " J a v a ";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (!Character.isWhitespace(c)) sb.append(c);
}
System.out.println(sb.toString());
}
}フィルタリングしてから数える
複数の考え方を組み合わせて、まず不要なものを取り除いた String を作り、その長さを測ることができます。
ここでは、フィルタリングしてから length() を読み取り、文字だけを数えます。
public class Main {
public static void main(String[] args) {
String text = "a1b2c3";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) sb.append(c);
}
System.out.println(sb.length());
}
}大文字と小文字の数を数える
複数のカウンターを同時に追跡できます。ここでは、大文字と小文字を別々に数えます。
各文字に対して独立した2つの判定を行い、条件に一致したカウンターを増やします。
public class Main {
public static void main(String[] args) {
String text = "JavaCode";
int upper = 0, lower = 0;
for (char c : text.toCharArray()) {
if (Character.isUpperCase(c)) upper++;
if (Character.isLowerCase(c)) lower++;
}
System.out.println(upper + " " + lower);
}
}フィルタリングが重要な理由
数える処理とフィルタリングは、パスワードの検証、ユーザー入力の整理、文字の種類ごとの集計など、日常的によく行う作業です。
どの処理にも、同じループと判定のパターンを使えます。目的に合わせて条件だけを変更します。
if (Character.isDigit(c)) {
count++;
}理解度チェック
文字を数えたりフィルタリングしたりする方法を理解できたか確認しましょう。
まとめ
カウントでは、isDigit や == のような判定に文字が合格したとき、カウンターをインクリメントします。
フィルタリングでは、必要な文字だけを残した新しい String を作成します。速度を重視する場合は、StringBuilder を使うのが適しています。条件を変えることで、母音、文字、数字を数えたり、空白を取り除いたりできます。
よくある質問
「文字のカウントとフィルタリング」レッスンは無料ですか?
はい。「文字のカウントとフィルタリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「文字のカウントとフィルタリング」で何を学びますか?
実践的なchar操作を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「文字のカウントとフィルタリング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- charプリミティブ
- 文字ヘルパーメソッド
- 文字をループ処理する
- 文字のカウントとフィルタリング