回答編集履歴

2

別案を追記

2016/11/29 03:49

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -67,3 +67,35 @@
67
67
  }
68
68
 
69
69
  ```
70
+
71
+
72
+
73
+ ---
74
+
75
+
76
+
77
+ 追記:
78
+
79
+ あるいは指示を1行単位としてもっと単純化する案もあると思います。2つのデータの間を1個以上の空白かタブで区切って1行で指示すると仮定すると以下のように単純化できます。
80
+
81
+ ```java
82
+
83
+ static String elementRex = "[A-Za-z0-9]{3,10}";
84
+
85
+ static String lineRex = "^(" + elementRex + ")[ \t]+(" + elementRex + ")$";
86
+
87
+ static Pattern linePat = Pattern.compile(lineRex);
88
+
89
+ ...
90
+
91
+ Matcher m = linePat.matcher(line);
92
+
93
+ if (m.matches()) {
94
+
95
+ pr.println(m.group(1) + "," + m.group(2));
96
+
97
+ } else ...
98
+
99
+ ```
100
+
101
+ なお自分の回答は仕様を変えることで論理を単純にすることに着眼しましたが、実装においてはA-pZさんが言っておられる「論理の適切な分離」がとても大切だと思います。

1

説明文追記

2016/11/29 03:49

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -17,6 +17,8 @@
17
17
  一つ目の文字列を入力した後でも次の入力を間違えたらまた最初からやりなおし。そうすれば一つ目の入力を間違えていることに気づいたときにわざと2つ目を間違えて最初からやりなおすことができる。
18
18
 
19
19
 
20
+
21
+ 以下コード(例外等はしょってます)
20
22
 
21
23
  ```java
22
24