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

回答編集履歴

1

インデントの揃え方

2020/07/08 06:28

投稿

momon-ga
momon-ga

スコア4828

answer CHANGED
@@ -3,4 +3,82 @@
3
3
  まずは、インデントをそろえるのが良いと思います。
4
4
  文法的に波カッコが正しく一致しているか確認してみては?
5
5
 
6
- try以降のforあたりから、おかしいですよね?
6
+ try以降のforあたりから、おかしいですよね?
7
+
8
+ --
9
+ 追記
10
+
11
+ > eclipseに「}を入れて終了させてください」と言われたので、その通りにしました。
12
+
13
+ 足りないからつけたすものでなく、自分の考えた通りの位置にカッコをつけてください。
14
+ なので、構造をわかりやすくするためにインデントが重要になります。
15
+
16
+ > インデントはこちらでよろしいでしょうか?
17
+
18
+ インデントをそろえてるというのは波カッコの位置をそろえて、波カッコの中をタブ1個分(4とか8個の空白)ずらして、波カッコで囲われた範囲をすぐに判断できるようにします。
19
+
20
+ なので
21
+
22
+ ```
23
+ }
24
+ }
25
+ ```
26
+ とか
27
+ ```
28
+ }}
29
+ ```
30
+
31
+ みたいなコードが出てきたらおかしいと思ってよいです。
32
+
33
+ eclipseを使っているなら、[ソース]-[フォーマット] (Ctrl+Shift+F)するとこんな感じになります。
34
+ ```java
35
+ public static String getInput() {
36
+ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
37
+ double a = 0, b = 0, c = 0, d = 0, x1 = 0, x2 = 0;
38
+ String line = null;
39
+ Scanner sc = new Scanner(System.in);
40
+ System.out.println("Please Input: a,b,c");
41
+ try {
42
+ for (int i = 0; i < 3; i++) {
43
+ line = reader.readLine();//ここでキーボード入力を行えるようにする?
44
+ System.out.println("line=" + a + ", " + b + ", " + c);//上で入力した数字をa,b,cとして認識させたい。
45
+ }
46
+ } catch (NumberFormatException | IOException e) {
47
+ System.out.println("Could you enter the number?");
48
+ System.out.println("Please try again!");
49
+ }
50
+ if (a == 0) {
51
+ x1 = x2 = (-c) / b;
52
+ } else {
53
+ if (d < 0) {
54
+ d = b * b - 4 * a * c;
55
+ System.out.println("There is no solution because the discriminant is negative. D=" + d);
56
+ } else {
57
+ x1 = (-b + Math.sqrt(d)) / (2 * a);
58
+ x2 = (-b - Math.sqrt(d)) / (2 * a);
59
+ System.out.println("x1=" + x1);
60
+ System.out.println("x2=" + x2);
61
+ }
62
+ }
63
+ return line;
64
+ }
65
+ ```
66
+
67
+ forループでNuberFormatExceptionが発生したときに再入力をさせたいのだろうと
68
+ インデントをずらしている?のかもしれませんが、実際にはループの外側に抜けちゃうのが、わかると思います。
69
+
70
+ 想いでなく、文法に沿ってインデントを確認すると、構造がおかしいことに気づくはずです。
71
+ ※繰り返しですが、eclipseにはフォーマット機能あるので、それ使う方が楽です。
72
+
73
+ ```java
74
+ try {
75
+ for (int i = 0; i < 3; i++) {
76
+ line = reader.readLine();//ここでキーボード入力を行えるようにする?
77
+ System.out.println("line=" + a + ", " + b + ", " + c);//上で入力した数字をa,b,cとして認識させたい。
78
+ }
79
+ } catch (NumberFormatException | IOException e) {
80
+ // ここに来た場合、for文の外側なので try again と表示するだけで、次の処理へいく
81
+ System.out.println("Could you enter the number?");
82
+ System.out.println("Please try again!");
83
+ }
84
+ ```