220 likes | 355 Views
String - 文字列. 2009 年 10 月 9 日 7ADD2116 佐藤洋輔. はじめに. 各自の「 Java 」フォルダの中に、「 String 」フォルダを作ってください。 手順: 1. 「 Tera Term 」を起動 2. 「 cd Java 」と入力 3. 「 mkdir String 」と入力 4. 「 cd String 」と入力. 1. 文字列の生成( 1 ). String とは? →文字列を入れる型。 文字列は「 ” ” 」で囲む。 int や byte とは違い、大文字で始まる。
E N D
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔
はじめに • 各自の「Java」フォルダの中に、「String」フォルダを作ってください。 • 手順: 1. 「Tera Term」を起動 2. 「cd Java」と入力 3. 「mkdir String」と入力 4. 「cd String」と入力
1. 文字列の生成(1) • Stringとは? →文字列を入れる型。 文字列は「””」で囲む。 intやbyteとは違い、大文字で始まる。 例)String a = "abc";
1. 文字列の生成(2) • 「Append.java」を実行してみましょう。
2. 文字列の比較(1) • 数値の場合は「a == b」のように表記し比較するが、文字列の場合はそうはいかない。 • そこで比較用のメソッド「equals()」を使う。 例)a.equals(b) 文字列aとbが等しいなら true
2. 文字列の比較(2) • 「Equal.java」を実行してみましょう。
演習①(テキストの演習2) • Equal.javaを(equalsを用いて)書き換え、以下のような結果になるEqual2.javaを作りなさい。
演習① 解答例 public class Equal2{ public static void main(String argv[]){ String s1 = "Takuma"; String s2 = "Akito"; String s3 = "Takuma"; String s4 = new String(s1); System.out.println(s1 + "==" + s2 + " : " +(s1 == s2)); System.out.println(s1 + "==" + s1 + " : " +(s1 == s1)); System.out.println(s1 + "==" + s3 + " : " +(s1 == s3)); System.out.println(s1 + "==" + s4 + " : " +s1.equals(s4)); } }
3. 文字列の操作(1) a,bをStringとしたとき、 • a.length() 文字列aの長さを求める。 • a.charAt(int i) 文字列aのi番目の文字を求める。 • a.indexOf(String x) 文字列aの最初に文字xが現れる場所を求める。 • a.substring(int i, int j) 文字列aのi番目からj番目までの部分文字列を求める。
3. 文字列の操作(2) • 「情報メディア」という文字列があったとして、これを「substring」で指定したときと「indexOf」で指定したときとでは示している位置が異なる。 a.substring(0, 4)・・・出力結果は「情報メデ」 0→ 1→ 2→ 4→ 5→ 6→ 3→ │情│報│メ│デ│ィ│ア│ ←0 ←1 ←2 ←3 ←4 ←5 a.indexOf(デ)・・・出力結果は「3」
演習②(1)(テキストの演習3) 文字列 “259-1292神奈川県平塚市北金目1117”について • 1. 何文字あるか数えよ。 • 2. 3文字目を表示せよ。 • 3. 郵便番号だけを表示せよ。 • 4. 県名だけを表示せよ。 • 5. 県名だけを除いて表示せよ。
演習② 解答例 public class Tokai{ public static void main(String argv[]){ String a = "259-1292神奈川県平塚市北金目1117"; System.out.println(a); System.out.println("文字列の長さ:" + a.length() + "文字"); System.out.println("3文字目:" + a.charAt(2)); System.out.println("郵便番号:" + a.substring(0, 8)); System.out.println("県名:" + a.substring(8, 12)); System.out.println("県名以外:" + a.substring(0, 8) + a.substring(12, 22)); } }
4. 文字列の走査(1) • charAtを使うと文字列を一文字づつ分解することが出来る。 例)s="abc"を s.charAt(0) + s.charAt(1) + s.charAt(2) と書くと“abc” が表示される。
4. 文字列の走査(2) • 「Forward.java」を実行してみましょう。
演習③(テキストの演習4) • Forwardを修正し、入力文字を逆順にするReverse.javaを書きなさい。
演習③ 解答例 public class Reverse{ public static void main(String argv[]){ String s = argv[0]; int i; for(i = s.length()-1; i > -1; --i){ System.out.print(s.charAt(i)); } System.out.println(); } }
5. バイト配列 • String sからbyteの配列b[]への変換 byte b[] = s.getBytes(); • byteの配列から文字列への変換 String s = new String(b); • 整数(int a)から文字列への変換 String s = new String(a); (もしくは, String s = "" + a;) • 文字列から整数への変換 int a = Integer.parseInt(s);
6. 多次元配列 int x[][] = {{1, 2}, {3, 4}}; • これは2行2列の行列を表現している。 • x[0][0] = 1, x[0][1] = 2, x[1][0] = 3, x[1][1] = 4 のように初期化される。 • x[0]は {1,2} という整数の配列であり、x[1]は{3,4}の配列である。
宿題① • テキストの宿題3 • 入力した単語を以下のように表示する「Display.java」を作りなさい。 出力結果例) kiknkiknkiknkiknkiknkikn kikn kiknkiknkiknkikn kikn kiknkikn kiknkikn kiknkikn kiknkiknkikn kiknkiknkikn kiknkiknkikn kiknkiknkikn kiknkikn kiknkikn kiknkikn kikn kiknkiknkiknkikn kikn kiknkiknkiknkiknkiknkikn 実行例) $ java Display kikn
宿題②(オリジナル) • 任意の文字列を入力し、そこに「moji」という文字列があった場合は「true」を表示し、無かった場合は「false」を表示する「Moji.java」を作りなさい。 実行例) $ java Moji abcdefgmojihij 出力結果例) true
宿題③(オリジナル) • 下記の配列を小さい順に表示する「Hairetsu.java」を作りなさい。 • ただし、必ずfor文とif文を使うこと。 { 12, 67, 6, 29, 77, 41 } 出力結果例) 6 12 29 41 67 77 実行例) $ java Hairetsu