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

回答編集履歴

3

追加

2020/09/02 09:50

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -12,6 +12,33 @@
12
12
  forを使うことは問題ありません。むしろ配列とforは相性が良いですし。
13
13
  (とりあえず、forを作る前の下準備の練習として一度展開してみるってのはありですが)
14
14
 
15
+ > forを使う場合、ansはどのように扱えばよいのでしょうか。
16
+
17
+ forを使うかどうかにはあまり関係がありません。
18
+
19
+ 変数にはスコープという寿命があるため、ブロックの中で宣言した変数は、ブロックの中でしか使えません。
20
+ これは、使った変数が想定外の場所に悪影響を与えるのを防止するために、変数の影響範囲を抑えるための機能です。
21
+
22
+ 逆に言えば、変数は使いたい位置で使えるスコープが確保できるように宣言を行います。
23
+
24
+ たとえば、以下のように書けば、変数xのスコープはブロックの中だけですので、その外で使おうとすればエラーになります。
25
+ ```
26
+ {
27
+ int x = 3;
28
+ }
29
+ print(x); //エラー
30
+ ```
31
+
32
+ なので、以下のように、ブロックの外で変数xを宣言することで、変数xのスコープはブロックの外になるので、
33
+ ブロックの外でも使うことができるようになります。
34
+ ```
35
+ int x;
36
+ {
37
+ x = 3;
38
+ }
39
+ print(x);
40
+ ```
41
+
15
42
  ---
16
43
  もう一つ余談ですが、
17
44
  `Math.random()`は、`0`以上`1`未満(0は含む、1は含まない)の乱数を返すメソッドですので、

2

追加

2020/09/02 09:50

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -4,4 +4,16 @@
4
4
 
5
5
  なお、現在の状態だと、ansは一つのデータしか入りませんので、記録されているのは、
6
6
  最後に入力した値だけになります。
7
- 5つのデータを入力したい場合には、ansも配列にして複数の値を扱えるようにする必要があります。
7
+ 5つのデータを入力したい場合には、ansも配列にして複数の値を扱えるようにする必要があります。
8
+
9
+ > ansも配列にする必要があること、理解できました。
10
+ for文を使わずに地道に5つの計算をさせてみます。
11
+
12
+ forを使うことは問題ありません。むしろ配列とforは相性が良いですし。
13
+ (とりあえず、forを作る前の下準備の練習として一度展開してみるってのはありですが)
14
+
15
+ ---
16
+ もう一つ余談ですが、
17
+ `Math.random()`は、`0`以上`1`未満(0は含む、1は含まない)の乱数を返すメソッドですので、
18
+ `(int)(Math.random() * 99)`とした場合、`0`以上`99`未満(99は含まない)の整数になりますので、
19
+ 結果は、`0`~`98`になります。

1

追加

2020/09/02 09:29

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -1,3 +1,7 @@
1
1
  ブロックの内部で宣言した変数は、ブロックの中でしか使えません。
2
2
  ブロックの外で使う変数は、ブロックの外で宣言してください。
3
- もしくは、ブロックの外で宣言した変数へと値を移してください。
3
+ もしくは、ブロックの外で宣言した変数へと値を移してください。
4
+
5
+ なお、現在の状態だと、ansは一つのデータしか入りませんので、記録されているのは、
6
+ 最後に入力した値だけになります。
7
+ 5つのデータを入力したい場合には、ansも配列にして複数の値を扱えるようにする必要があります。