回答編集履歴
3
ちょちょいと修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
`start`の途中で`keisan`が呼ばれているからです。本来`button.setOnAction`の処理の中で`keisan`が実行されなければならないのに、`alert.setContentText`に文字列として渡すときにいきなり実行されてしまっています。
|
2
2
|
|
3
|
-
プログラムのバグは99.9%**書かれたままに動いた
|
3
|
+
プログラムのバグは99.9%**書かれたままに動いた結果**であり、言語仕様を疑うのは愚の骨頂です。**その目の曇りがミスの発見を遅らせる原因になります**。エラーメッセージをちゃんと読めば以下のメッセージが読み取れます。
|
4
4
|
```
|
5
5
|
Caused by: java.lang.NumberFormatException: For input string: ""
|
6
6
|
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
|
2
プログラマの格言を追記
answer
CHANGED
@@ -9,4 +9,8 @@
|
|
9
9
|
at Kadai14_1.keisan(Kadai14_1.java:50)
|
10
10
|
```
|
11
11
|
|
12
|
-
Kadai14_1のkeisanの中でparseIntに渡している文字列が`""`であり、数値として扱えない文字列であるため`NumberFormatException`が起きていると**Javaは正しく原因を伝えています**。
|
12
|
+
Kadai14_1のkeisanの中でparseIntに渡している文字列が`""`であり、数値として扱えない文字列であるため`NumberFormatException`が起きていると**Javaは正しく原因を伝えています**。
|
13
|
+
|
14
|
+
誰が言ったかわかりませんが、プログラマが心に刻んでおかなければならない鉄則を表した言葉があります。
|
15
|
+
|
16
|
+
**プログラムは思ったとおりには動かない。書いたとおりに動くのだ。**
|
1
追記
answer
CHANGED
@@ -1,1 +1,12 @@
|
|
1
|
-
`start`の途中で`keisan`が呼ばれているからです。本来`button.setOnAction`の処理の中で`keisan`が実行されなければならないのに、`alert.setContentText`に文字列として渡すときにいきなり実行されてしまっています。
|
1
|
+
`start`の途中で`keisan`が呼ばれているからです。本来`button.setOnAction`の処理の中で`keisan`が実行されなければならないのに、`alert.setContentText`に文字列として渡すときにいきなり実行されてしまっています。
|
2
|
+
|
3
|
+
プログラムのバグは99.9%**書かれたままに動いた仕様通りの結果**であり、仕様を疑うのは愚の骨頂です。**その目の曇りがミスの発見を遅らせる原因になります**。エラーメッセージをちゃんと読めば以下のメッセージが読み取れます。
|
4
|
+
```
|
5
|
+
Caused by: java.lang.NumberFormatException: For input string: ""
|
6
|
+
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
|
7
|
+
at java.lang.Integer.parseInt(Integer.java:592)
|
8
|
+
at java.lang.Integer.parseInt(Integer.java:615)
|
9
|
+
at Kadai14_1.keisan(Kadai14_1.java:50)
|
10
|
+
```
|
11
|
+
|
12
|
+
Kadai14_1のkeisanの中でparseIntに渡している文字列が`""`であり、数値として扱えない文字列であるため`NumberFormatException`が起きていると**Javaは正しく原因を伝えています**。
|