このページは「JAVAの文字列」の演習問題です。「JAVAの文字列」の基礎を学びたい方はこちらで参考してください。
JAVAの文字列
StringクラスといえばJavaで頻繁に使うクラスの一つかと思います。 この記事では、Stringクラスについて 、Stringクラスとは、文字列の取り扱い、文字列の表示、文字列の演算、型変換などを詳しく説明します。
1. 文字列の比較
問題:2つの文字列をキーボードから入力して、比較する
条件 :compareTo()
とcompareToIgnoreCase()
どちらも使って比較すること。package helloworld; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { String str1, str2; int result; Scanner scanner = new Scanner(System.in); System.out.print("1つ目の文字列: "); str1 = scanner.nextLine(); System.out.print("2つ目の文字列: "); str2 = scanner.nextLine(); System.out.print("compareTo()で比較した場合: "); result = str1.compareTo(str2); if (result < 0) { System.out.println("「" + str1 + "」 < 「" + str2 + "」"); } else if (result > 0) { System.out.println("「" + str1 + "」 > 「" + str2 + "」"); } else { System.out.println("「" + str1 + "」 = 「" + str2 + "」"); } System.out.print("compareTo()で比較した場合: "); result = str1.compareToIgnoreCase(str2); if (result < 0) { System.out.println("「" + str1 + "」 < 「" + str2 + "」"); } else if (result > 0) { System.out.println("「" + str1 + "」 > 「" + str2 + "」"); } else { System.out.println("「" + str1 + "」 = 「" + str2 + "」"); } } }
1つ目の文字列: hello 2つ目の文字列: HeLLo compareTo()で比較した場合: 「hello」 > 「HeLLo」 compareTo()で比較した場合: 「hello」 = 「HeLLo」
compareTo()
は大文字と小文字を区別して、比較しますが、compareToIgnoreCase()
は大文字と小文字を区別せずに比較します。 equals、compareTo()、compareToIgnoreCase()で文字列の比較について詳しく見たい方:
![]() | equals、compareTo()、compareToIgnoreCase()で文字列の比較 ../../../java/java-string.html?goto=2to2 StringクラスといえばJavaで頻繁に使うクラスの一つかと思います。 この記事では、Stringクラスについて 、Stringクラスとは、文字列の取り扱い、文字・・・ |
2. 文字列から特定の文字が出現する回数
問題:宣言した文字列の中に、特定の文字がいくつ含められているか確認する。
条件 : substringとcharAtメソッドをどちらも使うこと。ヒント : 番目を1ずつ確認するため、for文を使って、文字列の0番目から「文字列の長さ-1」番目まで繰り返し確認する。package helloworld; public class HelloWorld { public static void main(String[] args) { String str = "学生は学校に行くべきですが、夏休み中は学校に行かなくても大丈夫です。"; char character = '学'; int count1 = 0; int count2 = 0; // charAtメソッドで確認する。 for (int i = 0; i < str.length(); i++) { // 特定の文字は元の文字列のi番目の文字と一致すれば、countを1増やす。 if (str.charAt(i) == character) { count1++; } } // substringメソッドで確認する。 for (int i = 0; i < str.length(); i++) { // 特定の文字は元の文字列のi番目の文字と一致すれば、countを1増やす。 if (str.substring(i,i+1).equals(String.valueOf(character))) { count2++; } } System.out.println("元の文字列: " + str); System.out.println("charAtの確認で「" + character + "」の出現する回数: " + count1); System.out.println("substringの確認で「" + character + "」の出現する回数: " + count2); } }
元の文字列: 学生は学校に行くべきですが、夏休み中は学校に行かなくても大丈夫です。 charAtの確認で「学」の出現する回数: 3 substringの確認で「学」の出現する回数: 3
説明:
==
演算子を使ってもいいです。 substring、charAtで範囲を切り出すについて詳しく見たい方:
![]() | substring、charAtで範囲を切り出す ../../../java/java-string.html?goto=2to7 StringクラスといえばJavaで頻繁に使うクラスの一つかと思います。 この記事では、Stringクラスについて 、Stringクラスとは、文字列の取り扱い、文字・・・ |
3. 文字列の各文字の出力
問題:宣言した文字列の各文字をコンソールに出力する。
ヒント : charAtメソッドかsplitメソッドを使用する。package helloworld; public class HelloWorld { public static void main(String[] args) { String str = "学生は学校に行くべきです。"; System.out.println("元の文字列: " + str); System.out.print("charAtメソッドを使用した場合、元の文字列から各文字: " ); //charAtメソッドを使用する for (int i = 0; i < str.length(); i++) { System.out.print(" " + str.charAt(i)); } System.out.print("\nsplitメソッドを使用した場合、元の文字列から各文字: " ); //splitメソッドを使用する String[] array = str.split(""); for(String n : array){ System.out.print(" " + n); } } }
元の文字列: 学生は学校に行くべきです。 charAtメソッドを使用した場合、元の文字列から各文字: 学 生 は 学 校 に 行 く べ き で す 。 splitメソッドを使用した場合、元の文字列から各文字: 学 生 は 学 校 に 行 く べ き で す 。
説明:
splitで分割について詳しく見たい方:
![]() | splitで分割 ../../../java/java-string.html?goto=2to6 StringクラスといえばJavaで頻繁に使うクラスの一つかと思います。 この記事では、Stringクラスについて 、Stringクラスとは、文字列の取り扱い、文字・・・ |
JAVAの配列について詳しく見たい方:
![]() | JAVAの配列配列とは、同じ型の複数の値をまとめて一つの変数として扱うことができるデータ構造です。この記事では配列の宣言、初期化、追加などの基本操・・・ |
4. 文字列の無駄な空白の削除
問題:宣言した文字列の中から無駄な空白(半角)を削除する。
ヒント : 文字列の無駄な空白は文字列の先頭と末尾にある空白と、連続空白です。先頭と末尾の空白の取り除くのはWhile文を使いましょう。package helloworld; public class HelloWorld { public static void main(String[] args) { String str = " i love you so much ! "; int count = 0; System.out.println("元の文字列: 「" + str + "」"); //先頭の空白を取り除く while(str.charAt(0) == ){//char型の文字は必ず「'」で囲まれる。 str = str.substring(1); } //末尾の空白を取り除く count = str.length(); while(str.charAt(count - 1) == ){//char型の文字は必ず「'」で囲まれる。 str = str.substring(0,count - 2); count = str.length(); } //文字列の真ん中の無駄な空白を取り除く while(str.contains(" ")){ str = str.replace(" ", " "); } System.out.println("整理した文字列: 「" + str + "」"); } }
元の文字列: 「 i love you so much ! 」 整理した文字列: 「i love you so much !」
説明:
5. 英語の文字列をワードずつに分ける。
問題:英語の文字列をワードずつに分けて、1行ずつ表示する。
package helloworld; public class HelloWorld { public static void main(String[] args) { String str = "i love you so much"; char character ; System.out.println("元の文字列: 「" + str + "」"); System.out.println("ワードに分けた:"); for (int i = 0; i < str.length(); i++) { character = str.charAt(i);//strのi番目の文字をcharacterに代入する if (character == ) { System.out.println(); } else { System.out.print(character); } } } }
元の文字列: 「i love you so much」 ワードに分けた: i love you so much
説明:
str.split(" ")
のコードを利用すればいいです。6. まとめ
ここまでは文字列を取り扱うメソッドをたくさん紹介しましたが、使い方はある程度理解していただきましたでしょうか。lengthメソッド、equalsメソッドsplitメソッドなどはよく使われますので、使い方や構文を覚えておいてください。