質問編集履歴
4
質問内容の修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
for文を上書きさせない方法について
|
body
CHANGED
@@ -12,59 +12,60 @@
|
|
12
12
|
・消費税は8%とし、小数点以下で切り捨てで会計学を算出する。
|
13
13
|
|
14
14
|
### 発生している問題・エラーメッセージ
|
15
|
-
|
15
|
+
以下のようにプログラムを書きました。受け取る文房具名が一つの時は、しっかりと値段表記されます。ですが、文房具名が二つ以上の時は正常に計算がされません。原因として、一つの値(文房具名*個数)を受け取っても、次の値を受け取るとtotalPriceが上書きされていると予想しました。上書き処理をしないためにはどのように対処すればよいのでしょうか?
|
16
16
|
|
17
|
-
|
18
17
|
エラーメッセージ
|
19
|
-
lang.ArrayIndexOutOfBoundsExceptionIndex 1 out of bounds for length 1
|
20
|
-
|
18
|
+
コンバイルできているためなし
|
21
19
|
|
22
20
|
|
23
21
|
JAVA
|
24
22
|
ソースコード
|
25
23
|
```ここに言語を入力
|
26
|
-
class
|
24
|
+
class CalcThingSum {
|
27
25
|
public static void main (String[] args) {
|
28
26
|
|
29
|
-
|
27
|
+
int thing= 0 ;
|
30
28
|
int sum = 0 ;
|
31
29
|
int totalPrice = 0 ;
|
32
30
|
double tax=1.08;
|
33
31
|
|
34
32
|
for( int i=0 ; i<args.length ; i+=2 ){
|
33
|
+
|
35
34
|
|
36
|
-
if( args[i]
|
35
|
+
if( args[i].equals("消しゴム")){
|
37
|
-
|
36
|
+
thing= 320 ;
|
38
37
|
|
39
|
-
}else if( args[i]
|
38
|
+
}else if( args[i].equals("鉛筆")){
|
40
|
-
|
39
|
+
thing = 350 ;
|
41
40
|
|
42
|
-
}else if( args[i]
|
41
|
+
}else if( args[i].equals("定規")){
|
43
|
-
|
42
|
+
thing= 370 ;
|
44
43
|
|
45
|
-
}else if( args[i]
|
44
|
+
}else if( args[i].equals("のり")){
|
46
|
-
|
45
|
+
thing= 400 ;
|
47
46
|
|
48
47
|
}else{
|
49
|
-
|
48
|
+
thing= 300 ;
|
50
49
|
|
51
50
|
}
|
52
51
|
|
53
|
-
|
52
|
+
totalPrice = thing* Integer.parseInt(args[i+1]) ;
|
54
53
|
}
|
55
|
-
sum =(int)(totalPrice*tax);
|
56
|
-
|
57
54
|
|
55
|
+
|
58
|
-
if(
|
56
|
+
if(totalPrice>=1000){
|
59
|
-
sum= (int)(totalPrice*0.
|
57
|
+
sum=totalPrice- (int)(totalPrice*0.2);
|
60
58
|
|
61
|
-
|
59
|
+
|
62
60
|
}
|
61
|
+
sum =(int)(totalPrice*tax);
|
63
62
|
|
64
63
|
System.out.println( "合計金額は" + sum + "円です。" ) ;
|
65
64
|
}
|
66
|
-
}
|
67
65
|
```
|
68
66
|
### 試したこと
|
69
|
-
自分なりにある程度のコードを作ることが出来ました。ですが新たに
|
70
|
-
|
67
|
+
文房具名を5つに分け(thing~thing5という風に)そしてそれらの値をまとめて加える処理をしましたが、正しい計算結果が得られませんでした。
|
68
|
+
例
|
69
|
+
```
|
70
|
+
thing* Integer.parseInt(args[i+1])+thing* Integer.parseInt(args[i+1])...
|
71
|
+
```
|
3
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,26 +16,55 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
エラーメッセージ
|
19
|
+
lang.ArrayIndexOutOfBoundsExceptionIndex 1 out of bounds for length 1
|
19
|
-
|
20
|
+
at CalcCakeSum.main(CalcCakeSum.java:28)
|
20
21
|
|
21
|
-
### 該当のソースコード
|
22
22
|
|
23
|
-
JAVA
|
23
|
+
JAVA
|
24
24
|
ソースコード
|
25
|
+
```ここに言語を入力
|
25
|
-
class
|
26
|
+
class CalcCakeSum {
|
26
27
|
public static void main (String[] args) {
|
27
28
|
|
29
|
+
int cake = 0 ;
|
30
|
+
int sum = 0 ;
|
28
|
-
|
31
|
+
int totalPrice = 0 ;
|
29
|
-
|
30
|
-
double tax
|
32
|
+
double tax=1.08;
|
33
|
+
|
31
|
-
|
34
|
+
for( int i=0 ; i<args.length ; i+=2 ){
|
35
|
+
|
36
|
+
if( args[i]=="ショートケーキ"){
|
37
|
+
cake = 320 ;
|
38
|
+
|
39
|
+
}else if( args[i]=="モンブラン" ){
|
40
|
+
cake = 350 ;
|
41
|
+
|
42
|
+
}else if( args[i]=="チョコレートケーキ" ){
|
43
|
+
cake = 370 ;
|
44
|
+
|
45
|
+
}else if( args[i]=="いちごのタルト" ){
|
46
|
+
cake = 400 ;
|
47
|
+
|
48
|
+
}else{
|
49
|
+
cake = 300 ;
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
totalPrice = cake * Integer.parseInt(args[i+1]) ;
|
54
|
+
}
|
32
|
-
|
55
|
+
sum =(int)(totalPrice*tax);
|
33
|
-
|
56
|
+
|
57
|
+
|
34
|
-
|
58
|
+
if(sum>=1000){
|
59
|
+
sum= (int)(totalPrice*0.8);
|
60
|
+
|
35
|
-
|
61
|
+
sum=(int)sum;
|
36
|
-
|
62
|
+
}
|
63
|
+
|
64
|
+
System.out.println( "合計金額は" + sum + "円です。" ) ;
|
37
|
-
|
65
|
+
}
|
38
66
|
}
|
39
|
-
|
67
|
+
```
|
40
68
|
### 試したこと
|
41
|
-
|
69
|
+
自分なりにある程度のコードを作ることが出来ました。ですが新たに
|
70
|
+
①コンバイルまで済み、コマンドライン引数で複数のケーキ名を受け取った際に「ArrayIndexOutOfBoundsException」というエラーが生じる。②ショートケーキ以外のケーキ名を受け取ったときにも、ショートケーキの値であるint型の320が代入されます。という問題が生じました、助言いただけますでしょうか。
|
2
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
注文を受け(コマンドライン引数で受ける)、会計額を表示するプログラムを作りたいです。
|
3
3
|
(要件)
|
4
4
|
・商品は以下の五種類とする。
|
5
|
-
|
5
|
+
消しゴム :320円
|
6
|
-
|
6
|
+
鉛筆 :350円
|
7
|
-
|
7
|
+
定規:370円
|
8
|
-
|
8
|
+
のり :400円
|
9
|
-
|
9
|
+
ハサミ :300円
|
10
|
-
・「
|
10
|
+
・「文房具名」「個数」を注文情報として、これをコマンドライン引数で受ける
|
11
11
|
・合計金額が1000円以上である場合は2割引きをする。
|
12
12
|
・消費税は8%とし、小数点以下で切り捨てで会計学を算出する。
|
13
13
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
JAVA ここに言語名を入力
|
24
24
|
ソースコード
|
25
|
-
class
|
25
|
+
class StationaryCakeSum {
|
26
26
|
public static void main (String[] args) {
|
27
27
|
|
28
28
|
int total=
|
1
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,17 +1,41 @@
|
|
1
|
+
### 前提・実現したいこと
|
1
|
-
|
2
|
+
注文を受け(コマンドライン引数で受ける)、会計額を表示するプログラムを作りたいです。
|
3
|
+
(要件)
|
4
|
+
・商品は以下の五種類とする。
|
2
|
-
|
5
|
+
ショートケーキ :320円
|
3
|
-
|
6
|
+
モンブラン :350円
|
7
|
+
チョコレートケーキ:370円
|
8
|
+
いちごのタルト :400円
|
9
|
+
チーズケーキ :300円
|
10
|
+
・「ケーキ名」「個数」を注文情報として、これをコマンドライン引数で受ける
|
4
|
-
合計金額
|
11
|
+
・合計金額が1000円以上である場合は2割引きをする。
|
12
|
+
・消費税は8%とし、小数点以下で切り捨てで会計学を算出する。
|
5
13
|
|
14
|
+
### 発生している問題・エラーメッセージ
|
6
|
-
|
15
|
+
自分なりに、要件を満たすソースコードを書きましたが、コマンドライン引数で受けたものをどう処理すればいいのか分かりません。
|
7
16
|
|
8
17
|
|
18
|
+
エラーメッセージ
|
9
|
-
|
19
|
+
無し(未完成のため)
|
10
|
-
コマンドライン引数で受け取った商品名と個数を使って会計プログラムを作りたいのですが、アプローチの方法がいまいち思いつきません。
|
11
|
-
説明文がかなり不足していると思いますがどうぞよろしくお願いいたします。
|
12
20
|
|
21
|
+
### 該当のソースコード
|
13
22
|
|
23
|
+
JAVA ここに言語名を入力
|
24
|
+
ソースコード
|
25
|
+
class CalcCakeSum {
|
26
|
+
public static void main (String[] args) {
|
27
|
+
|
28
|
+
int total=
|
29
|
+
|
30
|
+
double tax =1.08;
|
31
|
+
|
32
|
+
double sum =total*tax;
|
33
|
+
|
34
|
+
if(sum>=1000){
|
35
|
+
double sum = sum*0.8
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
14
39
|
|
15
|
-
|
16
|
-
|
17
|
-
|
40
|
+
### 試したこと
|
41
|
+
コマンドライン引数の扱いについて調べましたが、文字と数字の二つの情報を処理する方法はわかりませんでした。
|