回答編集履歴

2

入力がない場合の問題を修正

2020/04/04 13:49

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -95,3 +95,47 @@
95
95
  }
96
96
 
97
97
  ```
98
+
99
+ **追記**
100
+
101
+ > ・入力が1つもない場合の演算結果は「1」とする
102
+
103
+
104
+
105
+ という仕様を満たしていませんでした。
106
+
107
+
108
+
109
+ while (!(str = br.readLine()).isEmpty())
110
+
111
+
112
+
113
+ while ((str = br.readLine()) != null && !str.isEmpty())
114
+
115
+ に修正してください。
116
+
117
+
118
+
119
+ 1行にまとめているのが分かりにくいなら、次のように書いてもいいでしょう。
120
+
121
+ ```Java
122
+
123
+ while (true) {
124
+
125
+ str = br.readLine();
126
+
127
+ if (str == null || str.isEmpty()) break;
128
+
129
+ try {
130
+
131
+ product *= Double.valueOf(str);
132
+
133
+ } catch (NumberFormatException e) {
134
+
135
+ System.out.println("数値を入力してください");
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```

1

コードの追加

2020/04/04 13:49

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -41,3 +41,57 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ これで仕様を満たすかな?
48
+
49
+ ```Java
50
+
51
+ import java.io.*;
52
+
53
+
54
+
55
+ public class Exercise3 {
56
+
57
+ public static void main(String[] args) {
58
+
59
+ try {
60
+
61
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
62
+
63
+ double product = 1;
64
+
65
+ String str;
66
+
67
+ while (!(str = br.readLine()).isEmpty())
68
+
69
+ try {
70
+
71
+ product *= Double.valueOf(str);
72
+
73
+ } catch (NumberFormatException e) {
74
+
75
+ System.out.println("数値を入力してください");
76
+
77
+ }
78
+
79
+ str = String.format("%,.16g", product);
80
+
81
+ if (str.indexOf('.') >= 0)
82
+
83
+ str = str.replaceAll("0*$", "").replaceAll("\.$", "");
84
+
85
+ System.out.println("入力された値の積 : " + str);
86
+
87
+ } catch (IOException e) {
88
+
89
+ System.out.println("入出力例外が発生しました");
90
+
91
+ }
92
+
93
+ }
94
+
95
+ }
96
+
97
+ ```