前提・実現したいこと
今 個人で使うためにJavaで入力された文の文字を、同じ母音の文字に入れ替え、文を表示するプログラムを組んでいます。
1 文を入力
2 文に含まれている文字の母音を調べる
3 1の文に含まれている文字を同じ母音を持つ文字へ入れ替える
4 表示
の流れで処理を行うプログラムで、処理結果は表示されるまではいったのですが、3のところで同じ母音を持たない文字への入れ替えが行われてしまいます。
3の部分でのコードで問題が起きていると思うのですが、直し方がわからず質問しました。
発生している問題・エラーメッセージ
入れ替えたい段では無い文字でも、入れ替えが行われてしまう
例 う段の文字で入れ替えをしたいが、お段の文字でも入れ替えが起きている
該当のソースコード
Java
1import java.io.*; 2import java.util.*; 3import java.io.FileWriter; 4import java.io.BufferedWriter; 5 6public class ShinIrekae{ 7 public static void main(String[] args) throws IOException{ 8 final BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); 9 10 System.out.println("どのような文の子音を変えますか?"); 11 String moto = buf.readLine(); 12 int motoline = moto.length(); 13 StringBuffer moto2 = new StringBuffer(moto); 14 char[] Moto = moto.toCharArray(); 15 Hikaku(Moto); 16 mk(moto,motoline, "", Moto); 17 } 18 19 private static void Hikaku(final char[] MOto){ 20 for(int b=0; b<MOto.length; b++){ 21 for(int a=0; a<A.length; a++){ 22 if((MOto[b]) == (A[a])){ 23 System.out.println(MOto[b] + "は、あ段にあります"); 24 } 25 } 26 for(int i=0; i<I.length; i++){ 27 if((MOto[b]) == (I[i])){ 28 System.out.println(MOto[b] + "は、い段にあります"); 29 } 30 } 31 for(int u=0; u<U.length; u++){ 32 if((MOto[b]) == (U[u])){ 33 System.out.println(MOto[b] + "は、う段にあります"); 34 } 35 } 36 for(int e=0; e<E.length; e++){ 37 if((MOto[b]) == (E[e])){ 38 System.out.println(MOto[b] + "は、え段にあります"); 39 } 40 } 41 for(int o=0; o<O.length; o++){ 42 if((MOto[b]) == (O[o])){ 43 System.out.println(MOto[b] + "は、お段にあります"); 44 } 45 } 46 for(int n=0; n<N.length; n++){ 47 if((MOto[b]) == (N[n])){ 48 System.out.println(MOto[b] + "は、んです");; 49 } 50 } 51 } 52 } 53 54 private static void mk(final String MOTO, final int size, final String text, final char[] chmoto){ 55 FileWriter fw = null; 56 BufferedWriter bw = null; 57 int cMT = MOTO.length(); 58 char[] chMOTO = new char [cMT]; 59 char[] chMOTOhi = new char [cMT]; 60 for(int kakuMOTO = 0; kakuMOTO<cMT; kakuMOTO++){ 61 chMOTO[kakuMOTO] = MOTO.charAt(kakuMOTO); 62 chMOTOhi[kakuMOTO] = chMOTO[kakuMOTO]; 63 } 64 char[] chMOTOhi2 = new char [cMT]; 65 for(int z=0; z<cMT; z++){ 66 for(int aa=0; aa<A.length; aa++){ 67 if((chMOTO[z]) == (A[aa])){ 68 chMOTOhi2[z] = 'あ'; 69 } 70 } 71 for(int ii=0; ii<I.length; ii++){ 72 if((chMOTO[z]) == (I[ii])){ 73 chMOTOhi2[z] = 'い'; 74 } 75 } 76 for(int uu=0; uu<U.length; uu++){ 77 if((chMOTO[z]) == (U[uu])){ 78 chMOTOhi2[z] = 'う'; 79 } 80 } 81 for(int ee=0; ee<E.length; ee++){ 82 if((chMOTO[z]) == (E[ee])){ 83 chMOTOhi2[z] = 'え'; 84 } 85 } 86 for(int oo=0; oo<O.length; oo++){ 87 if((chMOTO[z]) == (O[oo])){ 88 chMOTOhi2[z] = 'お'; 89 } 90 } 91 for(int nn=0; nn<N.length; nn++){ 92 if((chMOTO[z]) == (N[nn])){ 93 chMOTOhi2[z] = 'ん'; 94 } 95 } 96 } 97 98 int cht = text.length(); 99 char[] chtext = new char [cht]; 100 char[] chtexthi = new char [cht]; 101 for(int kakutext = 0; kakutext<cht; kakutext++){ 102 chtext[kakutext] = text.charAt(kakutext); 103 chtexthi[kakutext] = chtext[kakutext]; 104 } 105 char[] chtexthi2 = new char [cht]; 106 for(int zz=0; zz<text.length(); zz++){ 107 for(int aaa=0; aaa<A.length; aaa++){ 108 if((chtext[zz]) == (A[aaa])){ 109 chtexthi2[zz] = 'あ'; 110 } 111 }for(int iii=0; iii<I.length; iii++){ 112 if((chtext[zz]) == (I[iii])){ 113 chtexthi2[zz] = 'い'; 114 } 115 } 116 for(int uuu=0; uuu<U.length; uuu++){ 117 if((chtext[zz]) == (U[uuu])){ 118 chtexthi2[zz] = 'う'; 119 } 120 } 121 for(int eee=0; eee<E.length; eee++){ 122 if((chtext[zz]) == (E[eee])){ 123 chtexthi2[zz] = 'え'; 124 } 125 } 126 for(int ooo=0; ooo<O.length; ooo++){ 127 if((chtext[zz]) == (O[ooo])){ 128 chtexthi2[zz] = 'お'; 129 } 130 } 131 for(int nnn=0; nnn<N.length; nnn++){ 132 if((chtext[zz]) == (N[nnn])){ 133 chtexthi2[zz] = 'ん'; 134 } 135 } 136 } 137 138 if(text.length() == size){ 139 for(int zzz=0; zzz<cht; zzz++){ 140 if(chMOTOhi2[zzz] == chtexthi2[zzz]){ 141 try{ 142 String bun = "ShinIrekae.txt"; 143 fw = new FileWriter(bun, true); 144 bw = new BufferedWriter(fw); 145 bw.write(text); 146 System.out.println(text); 147 bw.newLine(); 148 bw.close(); 149 }catch(IOException ex){ 150 } 151 } 152 return; 153 } 154 }else{ 155 for(int c=0; c<cMT; c++){ 156 if(chMOTOhi2[c] == 'あ'){ 157 for(char d : A){ 158 mk(MOTO, size, text + d, chmoto); 159 } 160 }else if(chMOTOhi2[c] == 'い'){ 161 for(char d : I){ 162 mk(MOTO, size, text + d, chmoto); 163 } 164 }else if(chMOTOhi2[c] == 'う'){ 165 for(char d : U){ 166 mk(MOTO, size, text + d, chmoto); 167 } 168 }else if(chMOTOhi2[c] == 'え'){ 169 for(char d : E){ 170 mk(MOTO, size, text + d, chmoto); 171 } 172 }else if(chMOTOhi2[c] == 'お'){ 173 for(char d : O){ 174 mk(MOTO, size, text + d, chmoto); 175 } 176 }else if(chMOTOhi2[c] == 'ん'){ 177 for(char d : N){ 178 mk(MOTO, size, text + d, chmoto); 179 } 180 } 181 } 182 } 183 } 184 185 private static char[] A = {'あ','ぁ','か','が','さ','ざ','た','だ','な','は','ば','ぱ','ま','や','ゃ','ら','わ'}; 186 private static char[] I = {'い','ぃ','き','ぎ','し','じ','ち','ぢ','に','ひ','び','ぴ','み','り','ゐ'}; 187 private static char[] U = {'う','ぅ','く','ぐ','す','ず','つ','づ','ぬ','ふ','ぶ','ぷ','む','ゆ','ゅ','る'}; 188 private static char[] E = {'え','ぇ','け','げ','せ','ぜ','て','で','ね','へ','べ','ぺ','め','れ','ゑ'}; 189 private static char[] O = {'お','ぉ','こ','ご','そ','ぞ','と','ど','の','ほ','ぼ','ぽ','も','よ','ょ','ろ'}; 190 private static char[] N = {'ん'}; 191 private static char[] Hiragana = {'あ','い','う','え','お','か','が','き','ぎ','く','ぐ','け','げ','こ','ご','さ','ざ','し','じ','す','ず','せ','ぜ','そ','ぞ','た','だ','ち','ぢ','つ','づ','て','で','と','ど','な','に','ぬ','ね','の','は','ば','ぱ','ひ','び','ぴ','ふ','ぶ','ぷ','へ','べ','ぺ','ほ','ぼ','ぽ','ま','み','む','め','も','や','ゃ','ゆ','ゅ','よ','ょ','ら','り','る','れ','ろ','わ','を','ん'}; 192}
補足情報(FW/ツールのバージョンなど)
「よる」と打ち込んだ場合の実行結果
Java
1おお 2おぉ 3おこ 4おご 5おそ 6おぞ 7おと 8おど 9おの 10おほ 11おぼ 12おぽ 13おも 14およ 15おょ 16おろ 17おう 18おぅ 19おく 20おぐ 21おす 22おず 23おつ 24おづ 25おぬ 26おふ 27おぶ 28おぷ 29おむ 30おゆ 31おゅ 32おる 33ぉお 34ぉぉ 35ぉこ 36ぉご 37ぉそ 38ぉぞ 39ぉと 40ぉど 41ぉの 42ぉほ 43ぉぼ 44ぉぽ 45ぉも 46ぉよ 47ぉょ 48ぉろ 49ぉう 50ぉぅ 51ぉく 52ぉぐ 53ぉす 54ぉず 55ぉつ 56ぉづ 57ぉぬ 58ぉふ 59ぉぶ 60ぉぷ 61ぉむ 62ぉゆ 63ぉゅ 64ぉる 65こお 66こぉ 67ここ 68こご 69こそ 70こぞ 71こと 72こど 73この 74こほ 75こぼ 76こぽ 77こも 78こよ 79こょ 80ころ 81こう 82こぅ 83こく 84こぐ 85こす 86こず 87こつ 88こづ 89こぬ 90こふ 91こぶ 92こぷ 93こむ 94こゆ 95こゅ 96こる 97ごお 98ごぉ 99ごこ 100ごご 101ごそ 102ごぞ 103ごと 104ごど 105ごの 106ごほ 107ごぼ 108ごぽ 109ごも 110ごよ 111ごょ 112ごろ 113ごう 114ごぅ 115ごく 116ごぐ 117ごす 118ごず 119ごつ 120ごづ 121ごぬ 122ごふ 123ごぶ 124ごぷ 125ごむ 126ごゆ 127ごゅ 128ごる 129そお 130そぉ 131そこ 132そご 133そそ 134そぞ 135そと 136そど 137その 138そほ 139そぼ 140そぽ 141そも 142そよ 143そょ 144そろ 145そう 146そぅ 147そく 148そぐ 149そす 150そず 151そつ 152そづ 153そぬ 154そふ 155そぶ 156そぷ 157そむ 158そゆ 159そゅ 160そる 161ぞお 162ぞぉ 163ぞこ 164ぞご 165ぞそ 166ぞぞ 167ぞと 168ぞど 169ぞの 170ぞほ 171ぞぼ 172ぞぽ 173ぞも 174ぞよ 175ぞょ 176ぞろ 177ぞう 178ぞぅ 179ぞく 180ぞぐ 181ぞす 182ぞず 183ぞつ 184ぞづ 185ぞぬ 186ぞふ 187ぞぶ 188ぞぷ 189ぞむ 190ぞゆ 191ぞゅ 192ぞる 193とお 194とぉ 195とこ 196とご 197とそ 198とぞ 199とと 200とど 201との 202とほ 203とぼ 204とぽ 205とも 206とよ 207とょ 208とろ 209とう 210とぅ 211とく 212とぐ 213とす 214とず 215とつ 216とづ 217とぬ 218とふ 219とぶ 220とぷ 221とむ 222とゆ 223とゅ 224とる 225どお 226どぉ 227どこ 228どご 229どそ 230どぞ 231どと 232どど 233どの 234どほ 235どぼ 236どぽ 237ども 238どよ 239どょ 240どろ 241どう 242どぅ 243どく 244どぐ 245どす 246どず 247どつ 248どづ 249どぬ 250どふ 251どぶ 252どぷ 253どむ 254どゆ 255どゅ 256どる 257のお 258のぉ 259のこ 260のご 261のそ 262のぞ 263のと 264のど 265のの 266のほ 267のぼ 268のぽ 269のも 270のよ 271のょ 272のろ 273のう 274のぅ 275のく 276のぐ 277のす 278のず 279のつ 280のづ 281のぬ 282のふ 283のぶ 284のぷ 285のむ 286のゆ 287のゅ 288のる 289ほお 290ほぉ 291ほこ 292ほご 293ほそ 294ほぞ 295ほと 296ほど 297ほの 298ほほ 299ほぼ 300ほぽ 301ほも 302ほよ 303ほょ 304ほろ 305ほう 306ほぅ 307ほく 308ほぐ 309ほす 310ほず 311ほつ 312ほづ 313ほぬ 314ほふ 315ほぶ 316ほぷ 317ほむ 318ほゆ 319ほゅ 320ほる 321ぼお 322ぼぉ 323ぼこ 324ぼご 325ぼそ 326ぼぞ 327ぼと 328ぼど 329ぼの 330ぼほ 331ぼぼ 332ぼぽ 333ぼも 334ぼよ 335ぼょ 336ぼろ 337ぼう 338ぼぅ 339ぼく 340ぼぐ 341ぼす 342ぼず 343ぼつ 344ぼづ 345ぼぬ 346ぼふ 347ぼぶ 348ぼぷ 349ぼむ 350ぼゆ 351ぼゅ 352ぼる 353ぽお 354ぽぉ 355ぽこ 356ぽご 357ぽそ 358ぽぞ 359ぽと 360ぽど 361ぽの 362ぽほ 363ぽぼ 364ぽぽ 365ぽも 366ぽよ 367ぽょ 368ぽろ 369ぽう 370ぽぅ 371ぽく 372ぽぐ 373ぽす 374ぽず 375ぽつ 376ぽづ 377ぽぬ 378ぽふ 379ぽぶ 380ぽぷ 381ぽむ 382ぽゆ 383ぽゅ 384ぽる 385もお 386もぉ 387もこ 388もご 389もそ 390もぞ 391もと 392もど 393もの 394もほ 395もぼ 396もぽ 397もも 398もよ 399もょ 400もろ 401もう 402もぅ 403もく 404もぐ 405もす 406もず 407もつ 408もづ 409もぬ 410もふ 411もぶ 412もぷ 413もむ 414もゆ 415もゅ 416もる 417よお 418よぉ 419よこ 420よご 421よそ 422よぞ 423よと 424よど 425よの 426よほ 427よぼ 428よぽ 429よも 430よよ 431よょ 432よろ 433よう 434よぅ 435よく 436よぐ 437よす 438よず 439よつ 440よづ 441よぬ 442よふ 443よぶ 444よぷ 445よむ 446よゆ 447よゅ 448よる 449ょお 450ょぉ 451ょこ 452ょご 453ょそ 454ょぞ 455ょと 456ょど 457ょの 458ょほ 459ょぼ 460ょぽ 461ょも 462ょよ 463ょょ 464ょろ 465ょう 466ょぅ 467ょく 468ょぐ 469ょす 470ょず 471ょつ 472ょづ 473ょぬ 474ょふ 475ょぶ 476ょぷ 477ょむ 478ょゆ 479ょゅ 480ょる 481ろお 482ろぉ 483ろこ 484ろご 485ろそ 486ろぞ 487ろと 488ろど 489ろの 490ろほ 491ろぼ 492ろぽ 493ろも 494ろよ 495ろょ 496ろろ 497ろう 498ろぅ 499ろく 500ろぐ 501ろす 502ろず 503ろつ 504ろづ 505ろぬ 506ろふ 507ろぶ 508ろぷ 509ろむ 510ろゆ 511ろゅ 512ろる
「よる」と打ち込んだ場合、1文字目はお段 2文字目はう段の文字で入れ替えをしたいのですが、処理を行うと、1文字目はお段 2文字目はお段とう段の文字で入れ替えが起きています。
VirtualBoxでCentOS7を使用しています。
回答5件
あなたの回答
tips
プレビュー