質問編集履歴
3
タグ削除の取り消し
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
2
意図的な内容抹消の取り消し
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
不適合な型: エラー
|
1
|
+
不適合な型: 精度が失われる可能性があるdoubleからintへの変換のエラーについて
|
test
CHANGED
@@ -1,21 +1,143 @@
|
|
1
|
-
|
1
|
+
ポイントカードのポイント計算システムで、下記の2つのクラスを持つプログラムをつくろうとしているんですが、以下のエラーが発生してしまい、どのように対処してよいか分かりません、、、
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
あと、プログラムとしても、このコードで正しいのかどうかもまだ実行できていないのでわからず不安です。。
|
6
6
|
|
7
|
-
|
7
|
+
どなたか教えていただけませんでしょうか。
|
8
8
|
|
9
|
-
|
9
|
+
1つ目のクラス
|
10
10
|
|
11
|
-
|
11
|
+
フィールド: 現在のポイント数
|
12
12
|
|
13
|
+
メソッド: 購入する商品の金額を引数として、購入後のポイントを計算するメソッド(ポイント付与率は2%)
|
13
14
|
|
15
|
+
2つ目のクラス
|
14
16
|
|
15
|
-
|
17
|
+
1つ目のクラスのフィールドに、現在のポイント数を設定
|
16
18
|
|
17
|
-
|
19
|
+
標準入力から、購入する商品の金額を入力
|
18
20
|
|
19
|
-
|
21
|
+
1つ目のクラスのメソッドを使って商品購入後のポイント数を計算し、結果を標準出力で出力
|
20
22
|
|
23
|
+
以下のエラーメッセージが発生しました。
|
24
|
+
|
25
|
+
### 発生している問題・エラーメッセージ
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
H:\>javac PointsManage.java Pointcard.java
|
30
|
+
|
31
|
+
PointsManage.java:28: エラー: 不適合な型: 精度が失われる可能性があるdoubleからin
|
32
|
+
|
33
|
+
tへの変換
|
34
|
+
|
35
|
+
finalPoint = (pt.nowPoint + pt.buyPoint) *0.02;
|
36
|
+
|
37
|
+
^
|
38
|
+
|
39
|
+
エラー1個
|
40
|
+
|
41
|
+
H:\>
|
42
|
+
|
43
|
+
```
|
44
|
+
|
45
|
+
### 該当のソースコード
|
46
|
+
|
47
|
+
```Java
|
48
|
+
|
49
|
+
「2つ目のクラス」になります
|
50
|
+
|
51
|
+
// ポイントカードの情報を処理するクラス
|
52
|
+
|
53
|
+
import java.io.*;
|
54
|
+
|
55
|
+
import java.lang.*;
|
56
|
+
|
57
|
+
public class PointsManage {
|
58
|
+
|
59
|
+
public static void main(String[] args) {
|
60
|
+
|
61
|
+
String str;
|
62
|
+
|
63
|
+
int finalPoint,nowPoint,buyPoint;
|
64
|
+
|
65
|
+
try {
|
66
|
+
|
67
|
+
// 現在のポイント数を設定
|
68
|
+
|
69
|
+
PointCard pt = new PointCard();
|
70
|
+
|
71
|
+
pt.nowPoint = 1000;
|
72
|
+
|
73
|
+
pt.buyPoint=0;
|
74
|
+
|
75
|
+
//標準入力の準備
|
76
|
+
|
77
|
+
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
78
|
+
|
79
|
+
System.out.println("今回の購入金額を入力してください。");
|
80
|
+
|
81
|
+
str = reader.readLine();
|
82
|
+
|
83
|
+
buyPoint = Integer.parseInt(str);
|
84
|
+
|
85
|
+
pt.buyPoint = buyPoint; //標準入力されたポイントをポイントカードクラスのオブジェクトの「buyPoint」フィールドに代入
|
86
|
+
|
87
|
+
// ポイントカードクラスに定義されている、商品購入後のポイント数を計算するメソッドを呼び出し
|
88
|
+
|
89
|
+
finalPoint = (pt.nowPoint + pt.buyPoint) *0.02;
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
// 計算結果を出力
|
94
|
+
|
95
|
+
System.out.println("付与されたポイントは" + finalPoint + "ポイントです。");
|
96
|
+
|
97
|
+
}
|
98
|
+
|
99
|
+
catch(IOException e) {
|
100
|
+
|
21
|
-
|
101
|
+
System.out.println("標準入力でエラーが発生しました。");
|
102
|
+
|
103
|
+
}
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
}
|
108
|
+
|
109
|
+
```
|
110
|
+
|
111
|
+
以下は「1つ目のクラス」に値するコードです
|
112
|
+
|
113
|
+
// ポイントカードの情報を管理するクラス
|
114
|
+
|
115
|
+
import java.io.*;
|
116
|
+
|
117
|
+
import java.lang.*;
|
118
|
+
|
119
|
+
public class PointCard {
|
120
|
+
|
121
|
+
// str: 標準入力したもの
|
122
|
+
|
123
|
+
String str;
|
124
|
+
|
125
|
+
// studentNumber: 生徒の出席番号
|
126
|
+
|
127
|
+
int nowPoint,buyPoint;//nowPoint:現在のポイント数,buyPoint:購入金額,
|
128
|
+
|
129
|
+
int finalPoint;//finalPoint:商品購入後のポイント数を計算するメソッド
|
130
|
+
|
131
|
+
}
|
132
|
+
|
133
|
+
### 試したこと
|
134
|
+
|
135
|
+
double型でfinalPoint,nowPoint,buyPointを定義し、strをdouble型で読み込んでも、
|
136
|
+
|
137
|
+
上のソースコードのようにint型で定義しても上のエラーメッセージがどうしても出てしまいます・・
|
138
|
+
|
139
|
+
小数点を含む計算の場合、int型ではダメだということでしょうか・・??
|
140
|
+
|
141
|
+
### 補足情報(FW/ツールのバージョンなど)
|
142
|
+
|
143
|
+
ここにより詳細な情報を記載してください。
|
1
誤字
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
不適合な型:
|
1
|
+
不適合な型: エラー
|
test
CHANGED
@@ -2,202 +2,20 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
public ReturnTest() {
|
6
|
+
|
7
|
+
System.out.println(this.intM());
|
8
|
+
|
5
|
-
|
9
|
+
System.out.println(this.stringM());
|
10
|
+
|
11
|
+
}
|
6
12
|
|
7
13
|
|
8
14
|
|
9
|
-
|
15
|
+
戻り値の無いメソッドの作成。
|
10
16
|
|
11
|
-
|
17
|
+
public void voidM() {
|
12
18
|
|
19
|
+
String str = "戻り値の無いメソッドです。";
|
13
20
|
|
14
|
-
|
15
|
-
1つ目のクラス
|
16
|
-
|
17
|
-
フィールド: 現在のポイント数
|
18
|
-
|
19
|
-
メソッド: 購入する商品の金額を引数として、購入後のポイントを計算するメソッド(ポイント付与率は2%)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
2つ目のクラス
|
26
|
-
|
27
|
-
1つ目のクラスのフィールドに、現在のポイント数を設定
|
28
|
-
|
29
|
-
標準入力から、購入する商品の金額を入力
|
30
|
-
|
31
|
-
1つ目のクラスのメソッドを使って商品購入後のポイント数を計算し、結果を標準出力で出力
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
以下のエラーメッセージが発生しました。
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
### 発生している問題・エラーメッセージ
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
```
|
46
|
-
|
47
|
-
H:\>javac PointsManage.java Pointcard.java
|
48
|
-
|
49
|
-
PointsManage.java:28: エラー: 不適合な型: 精度が失われる可能性があるdoubleからin
|
50
|
-
|
51
|
-
tへの変換
|
52
|
-
|
53
|
-
finalPoint = (pt.nowPoint + pt.buyPoint) *0.02;
|
54
|
-
|
55
|
-
^
|
56
|
-
|
57
|
-
エラー1個
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
H:\>
|
62
|
-
|
63
|
-
```
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
### 該当のソースコード
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
```Java
|
72
|
-
|
73
|
-
「2つ目のクラス」になります
|
74
|
-
|
75
|
-
// ポイントカードの情報を処理するクラス
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
import java.io.*;
|
80
|
-
|
81
|
-
import java.lang.*;
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
public class PointsManage {
|
86
|
-
|
87
|
-
public static void main(String[] args) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
String str;
|
92
|
-
|
93
|
-
int finalPoint,nowPoint,buyPoint;
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
try {
|
98
|
-
|
99
|
-
// 現在のポイント数を設定
|
100
|
-
|
101
|
-
PointCard pt = new PointCard();
|
102
|
-
|
103
|
-
pt.nowPoint = 1000;
|
104
|
-
|
105
|
-
pt.buyPoint=0;
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
//標準入力の準備
|
110
|
-
|
111
|
-
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
112
|
-
|
113
|
-
System.out.println("今回の購入金額を入力してください。");
|
114
|
-
|
115
|
-
str = reader.readLine();
|
116
|
-
|
117
|
-
buyPoint = Integer.parseInt(str);
|
118
|
-
|
119
|
-
pt.buyPoint = buyPoint; //標準入力されたポイントをポイントカードクラスのオブジェクトの「buyPoint」フィールドに代入
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
// ポイントカードクラスに定義されている、商品購入後のポイント数を計算するメソッドを呼び出し
|
128
|
-
|
129
|
-
finalPoint = (pt.nowPoint + pt.buyPoint) *0.02;
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
// 計算結果を出力
|
134
|
-
|
135
|
-
System.out.println("付与されたポイントは" + finalPoint + "ポイントです。");
|
136
|
-
|
137
|
-
}
|
138
|
-
|
139
|
-
catch(IOException e) {
|
140
|
-
|
141
|
-
System.out.println(
|
21
|
+
System.out.println(str)
|
142
|
-
|
143
|
-
}
|
144
|
-
|
145
|
-
}
|
146
|
-
|
147
|
-
}
|
148
|
-
|
149
|
-
```
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
以下は「1つ目のクラス」に値するコードです
|
154
|
-
|
155
|
-
// ポイントカードの情報を管理するクラス
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
import java.io.*;
|
160
|
-
|
161
|
-
import java.lang.*;
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
public class PointCard {
|
166
|
-
|
167
|
-
// str: 標準入力したもの
|
168
|
-
|
169
|
-
String str;
|
170
|
-
|
171
|
-
// studentNumber: 生徒の出席番号
|
172
|
-
|
173
|
-
int nowPoint,buyPoint;//nowPoint:現在のポイント数,buyPoint:購入金額,
|
174
|
-
|
175
|
-
int finalPoint;//finalPoint:商品購入後のポイント数を計算するメソッド
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
}
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
### 試したこと
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
double型でfinalPoint,nowPoint,buyPointを定義し、strをdouble型で読み込んでも、
|
192
|
-
|
193
|
-
上のソースコードのようにint型で定義しても上のエラーメッセージがどうしても出てしまいます・・
|
194
|
-
|
195
|
-
小数点を含む計算の場合、int型ではダメだということでしょうか・・??
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
### 補足情報(FW/ツールのバージョンなど)
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
ここにより詳細な情報を記載してください。
|