teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

再帰呼出しを使わないコードを追加

2020/03/18 02:43

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -40,4 +40,44 @@
40
40
  }
41
41
  }
42
42
  }
43
+ ```
44
+
45
+ **追記**
46
+ 再帰呼出しを使わないと、
47
+ ```Java
48
+ import java.util.Scanner;
49
+
50
+ public class ShinIrekae {
51
+ final static String[] aiueo = {
52
+ "あぁかがさざただなはばぱまやゃらわ", "いぃきぎしじちぢにひびぴみりゐ",
53
+ "うぅくぐすずつづぬふぶぷむゆゅる", "えぇけげせぜてでねへべぺめれゑ",
54
+ "おぉこごそぞとどのほぼぽもよょろ"
55
+ };
56
+
57
+ public static void main(String[] args) {
58
+ Scanner scn = new Scanner(System.in);
59
+ System.out.println("どのような文の子音を変えますか?");
60
+ String str = scn.nextLine();
61
+ int i, j, len = str.length(), dan[] = new int[len], pos[] = new int[len];
62
+ for (i = 0; i < str.length(); dan[i++] = j) {
63
+ char c = str.charAt(i);
64
+ if ((j = getDan(c)) < 0) System.out.println(c + "は、そのものです");
65
+ else System.out.println(c + "は、" + aiueo[j].charAt(0) + "段にあります");
66
+ }
67
+ do {
68
+ for (i = 0; i < len; i++)
69
+ if (dan[i] < 0) System.out.print(str.charAt(i));
70
+ else System.out.print(aiueo[dan[i]].charAt(pos[i]));
71
+ System.out.println();
72
+ for (i = len; --i >= 0; pos[i] = 0)
73
+ if ((j = dan[i]) >= 0 && ++pos[i] < aiueo[j].length()) break;
74
+ } while (i >= 0);
75
+ }
76
+
77
+ static int getDan(char c) {
78
+ for (int i = 0; i < aiueo.length; i++)
79
+ if (aiueo[i].indexOf(c) >= 0) return i;
80
+ return -1;
81
+ }
82
+ }
43
83
  ```