回答編集履歴
1
再帰呼出しを使わないコードを追加
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
|
```
|