Java
1String[][] dogs = { 2 {"モコ" , "4歳" , "メス"} , 3 {"ムギ" , "2歳" , "オス"} , 4 {"ブブ" , "3歳" , "メス"} , 5 {"シロ" , "8歳" , "オス"} , 6 {"ブブ" , "3歳" , "メス"} , 7 {"ペロ" , "1歳" , "メス"} , 8 {"ルル" , "14歳" , "オス"} , 9 {"モモ" , "10歳" , "メス"} , 10 {"ポチ" , "6歳" , "オス"} , 11 {"エル" , "2歳" , "メス"} 12 };
【タイトルの①】
上の二次元配列の年齢を表すの要素中にある"歳"を削除したいです。自分でいろいろ調べてみたところでは、replace("歳", "")を使えばいいのではないかと予想しているのですが、二次元配列がからむとどう表現すればよいのか分かりません。例えばすべての要素のうち年齢の部分だけは固定して考えればいいとしてString[i][1].replace("歳", "")と書いてみたりしたのですが、たくさんエラーが出てきてしまいました。
【タイトルの②】
タイトルの①で明示した目的と関連してくるのですが、二次元配列からある要素(例えば上記の二次元配列中の4歳以上の犬)を抽出したいとき、どのようにすればよいでしょうか。自分的にいろいろ考えてみたところ、最近removeを勉強したことを思い出して、remove使えば配列中の該当していない二次元配列を削除できるのではないかと考えましたが、これはArrayListを使った場合のみにできるのであって通常の二次元配列ではできないものなのではないかとも思います...。また、ifを使って抽出したいと考えていますが、これも二次元配列がからむと【タイトル①】と同様、表現の仕方が分からなくなってしまいました。たとえば四歳以上と表現したい場合、if(String[i][1] >= 4){...となるのでしょうか…?
具体的なまとめとしては、
①二次元配列中の"歳"を消したい
②二次元配列中のある要素を抽出するとき
if(...>=4){
..........
}
の...で表した部分に何を入れればよいかわからない。
です。
質問がおおくて大変申し訳ないです。
どなたかお力添えお願いします。
【追記】
上の質問内容が解決したうえで、String型を扱うArrayListである「adultFamaleDogsList」を作成したいと思います。ただ、習いたてでいまいちこのコード内においてどのようにArrayListを作ればよいかわかりません。
ArrayListを作ろうとおもって以下の通りにコードを書いてみましたがdogs配列から条件にあう項目のみを抽出して新たな配列であるadultFemaleDogsListに格納しただけになってしまいました...。
Java
1import java.util.List; 2import java.util.ArrayList; 3 4class Ex1_15_2{ 5 public static void main (String[] args) { 6 7 /* 8 **犬の情報を持つ配列。格納されている情報は以下のとおり。 9 ** - dogs[x][0]:名前 10 ** - dogs[x][1]:年齢 11 ** - dogs[x][2]:性別 12 */ 13 String[][] dogs = { 14 {"モコ" , "4歳" , "メス"} , 15 {"ムギ" , "2歳" , "オス"} , 16 {"ブブ" , "3歳" , "メス"} , 17 {"シロ" , "8歳" , "オス"} , 18 {"ブブ" , "3歳" , "メス"} , 19 {"ペロ" , "1歳" , "メス"} , 20 {"ルル" , "14歳" , "オス"} , 21 {"モモ" , "10歳" , "メス"} , 22 {"ポチ" , "6歳" , "オス"} , 23 {"エル" , "2歳" , "メス"} 24 }; 25 26 for (int i = 0; i < dogs.length; i++) { 27 // 歳を削除し再格納 28 dogs[i][1] = dogs[i][1].replaceAll("歳", ""); 29 30 // 4以上の配列を書き出し 31 if (Integer.parseInt(dogs[i][1]) >= 4) { 32 if (dogs[i][2] == "メス") { 33 34 String adultFemaleDogsList = dogs[i][0] + "、" + dogs[i][1] + "、" + dogs[i][2] ; 35 System.out.println(adultFemaleDogsList) ; 36 37 } 38 } 39 } 40 41 42 } 43}
上のコードはちゃんと動きます。ただ、目的は、
①Sring型を扱うArrayList「adultFemaleDogsList」を作成する
②2次元配列dogsから以下の条件にあてはまる名前を抽出し、すべてadultFemaleDogsListに格納する【条件】4歳以上、メス
③adultFemaleDogsListに格納されているすべてのデータをprintlnで表示する
で、ArrayListが使えていないのですが、二次元配列が絡んだり、新しく配列を作るのではなく別の配列を参照したりするときに(この場合ではdogsの配列)、どのタイミングでどのようにArrayListを作ればよいかわかりません。

回答3件
あなたの回答
tips
プレビュー