前提・実現したいこと
String型の変数 String resule="ajisai"から母音のa,i,a,iを抜き出してList型listに追加したい。
まず①String型のajisaiをStringのsplitメソッドで分割したのちにString型配列String[]に{a,j,i,s,a,i}として格納し、②その後asListメソッドで新しく作ったList型のコレクションに代入しました。③その次にlistの要素をfor文で取り出し、if文の条件式中でlist.get(i)と"a","i","u","e","o"を比較して条件に合致するとき(あるいはしないとき)に、あらかじめ用意していた別のlistにlist.addで追加(もしくはもとのlistからlist.removeで要素を削除)して母音だけが入ったlistを得ようとしました。
ですが①、②はうまくいくものの③がうまくいかず、listの中身が空になってしまいます。
System.out.printlnで③の段階でうまく動いていないのは特定できたのですが、いろいろ方法を試したものの
独力では解決できかったので非常に基本的なことでつまずいているのかもしれませんがどうかご助力いただければ嬉しいです。
発生している問題・エラーメッセージ
[a, j, i, s, a, i] [a, j, i, s, a, i] a i a i [a, j, i, s, a, i] [a, j, i, s, a, i] []
該当のソースコード
java
1 2import java.util.ArrayList; 3import java.util.Arrays; 4import java.util.Iterator; 5import java.util.List; 6 7public class test2 { 8 9 public static void main(String[]args) { 10 11 String result="ajisai"; 12 henkan(result); 13 14 15 } 16 17 public static List<String> henkan(String result) { 18 19 20 21 String str = result; 22 23 String[] ar = str.split("");//String型から配列に変換 24 25 List<String> list = Arrays.asList(ar);//配列からリストに変換 26 List<String>list1=new ArrayList<String>();//asListのデメリットを回避 27 list1=list; 28 System.out.println(list); 29 System.out.println(list1);; 30 System.out.println(list.get(0)); 31 System.out.println(list.get(2)); 32 System.out.println(list1.get(0)); 33 System.out.println(list1.get(2)); 34 35 36 ArrayList<String> list2 = new ArrayList<>(); 37 38 Iterator<String> iterator = list2.iterator(); 39 while (iterator.hasNext()) { 40 String str1 = iterator.next(); 41 if (str1 != "a"&&str1 != "i"&&str1 != "u"&&str1 != "e"&&str1 != "o") { 42 43 iterator.remove(); 44 System.out.println(list2); 45 } 46 System.out.println(list2); 47 } 48 49 /*for (int i = 0; i < list1.size(); i++) { 50 51 if (list1.get(i) == "a") { 52 53 list2.add(list1.get(i));//リストに要素を追加 54 55 } else if (list1.get(i) == "i") { 56 57 list2.add(list1.get(i));//リストに要素を追加 58 59 } else if (list1.get(i) == "u") { 60 61 list2.add(list1.get(i));//リストに要素を追加 62 63 } else if (list1.get(i) == "e") { 64 list2.add(list1.get(i));//リストに要素を追加 65 66 } else if (list1.get(i) == "o") { 67 list2.add(list1.get(i));//リストに要素を追加 68 69 } 70 71 }*/ 72 73 74 75 /* // b,c,d を削除したいので、この3つの要素を持つCollectionを生成させる 76 List<String> set = new ArrayList<>(); 77 Collections.addAll(set, "b", "c", "d"); 78 79 // list1をlist2に退避する 80 List<String> list2 = new ArrayList<>(list1);*/ 81 82 // 削除前の要素をすべて表示する 83 //System.out.println(list2.get(0)); 84 //System.out.println(list2.get(2)); 85 86 System.out.println(list); 87 System.out.println(list1); 88 System.out.println(list2); 89 90 /*// b,c,dをlist2から削除する 91 list2.removeAll(set); 92 93 // 削除後の要素をすべて表示する 94 System.out.println(list2);*/ 95 return list2; 96 } 97}
試したこと
for文のほかに拡張for文、イテレーターを試してみたり、if文の条件式を変えたり
してみましたが改善しませんでした。
補足情報(FW/ツールのバージョンなど)
開発環境はeclipseで実行環境はjava13です。
回答5件
あなたの回答
tips
プレビュー