質問編集履歴

4

質問内容の修正

2021/07/16 16:45

投稿

ashura
ashura

スコア17

test CHANGED
@@ -1 +1 @@
1
- 会計表示するプログラム
1
+ for文上書きさせない方法について
test CHANGED
@@ -26,17 +26,13 @@
26
26
 
27
27
  ### 発生している問題・エラーメッセージ
28
28
 
29
- 自分なり、要件満たすソースコードを書きましたが、コマンドライン引受けものをどう処すればいのか分かりません。
29
+ 以下のようプログラムを書きました。受け取る文房具名一つの時はしっかりと値段表記されます。ですが、文房具名が二つ以上の時は正常に計算がされません。原因として、一つの値(文房具名*個)を受け取って、次受け取るとtotalPriceが上書きされていると予想しました。上書き処理をしないためにはのよに対処すればいのでしょう
30
-
31
-
32
30
 
33
31
 
34
32
 
35
33
  エラーメッセージ
36
34
 
37
- lang.ArrayIndexOutOfBoundsExceptionIndex 1 out of bounds for length 1
38
-
39
- at CalcCakeSum.main(CalcCakeSum.java:28)
35
+ コンバイルできているためなし
40
36
 
41
37
 
42
38
 
@@ -48,13 +44,13 @@
48
44
 
49
45
  ```ここに言語を入力
50
46
 
51
- class CalcCakeSum {
47
+ class CalcThingSum {
52
48
 
53
49
  public static void main (String[] args) {
54
50
 
55
51
 
56
52
 
57
- int cake = 0 ;
53
+ int thing= 0 ;
58
54
 
59
55
  int sum = 0 ;
60
56
 
@@ -66,35 +62,37 @@
66
62
 
67
63
  for( int i=0 ; i<args.length ; i+=2 ){
68
64
 
65
+
66
+
69
67
 
70
68
 
71
- if( args[i]=="ショートケーキ"){
69
+ if( args[i].equals("消しゴム")){
72
70
 
73
- cake = 320 ;
71
+ thing= 320 ;
74
72
 
75
73
 
76
74
 
77
- }else if( args[i]=="モンブラン" ){
75
+ }else if( args[i].equals("鉛筆")){
78
76
 
79
- cake = 350 ;
77
+ thing = 350 ;
80
78
 
81
79
 
82
80
 
83
- }else if( args[i]=="チョコレートケーキ" ){
81
+ }else if( args[i].equals("定規")){
84
82
 
85
- cake = 370 ;
83
+ thing= 370 ;
86
84
 
87
85
 
88
86
 
89
- }else if( args[i]=="いちごタルト" ){
87
+ }else if( args[i].equals("の")){
90
88
 
91
- cake = 400 ;
89
+ thing= 400 ;
92
90
 
93
91
 
94
92
 
95
93
  }else{
96
94
 
97
- cake = 300 ;
95
+ thing= 300 ;
98
96
 
99
97
 
100
98
 
@@ -102,25 +100,25 @@
102
100
 
103
101
 
104
102
 
105
- totalPrice = cake * Integer.parseInt(args[i+1]) ;
103
+ totalPrice = thing* Integer.parseInt(args[i+1]) ;
106
104
 
107
105
  }
108
106
 
109
- sum =(int)(totalPrice*tax);
107
+
110
-
111
-
112
108
 
113
109
 
114
110
 
115
- if(sum>=1000){
111
+ if(totalPrice>=1000){
116
112
 
117
- sum= (int)(totalPrice*0.8);
113
+ sum=totalPrice- (int)(totalPrice*0.2);
118
114
 
119
115
 
120
116
 
121
- sum=(int)sum;
117
+
122
118
 
123
119
  }
120
+
121
+ sum =(int)(totalPrice*tax);
124
122
 
125
123
 
126
124
 
@@ -128,12 +126,16 @@
128
126
 
129
127
  }
130
128
 
131
- }
132
-
133
129
  ```
134
130
 
135
131
  ### 試したこと
136
132
 
137
- なりある程度コードこと出来ました。ですが新たに
133
+ 文房具名を5つにけ(thing~thing5という風)そしてそれらまとめて加え処理をしました、正しい計算結果が得られせんでした。
138
134
 
135
+
136
+
137
+ ```
138
+
139
- ①コンバイルまで済み、コマンドライン引数で複数のケーキ名を受け取った際に「ArrayIndexOutOfBoundsException」というエラーが生じる。②ショートケーキ以外のケーキ名を受け取ったときにも、ショートケーキの値であるint型の320が代入されます。という問題が生じました、助言いただけますでしょうか。
139
+ thing* Integer.parseInt(args[i+1])+thing* Integer.parseInt(args[i+1])...
140
+
141
+ ```

3

質問内容の修正

2021/07/16 16:45

投稿

ashura
ashura

スコア17

test CHANGED
File without changes
test CHANGED
@@ -34,48 +34,106 @@
34
34
 
35
35
  エラーメッセージ
36
36
 
37
+ lang.ArrayIndexOutOfBoundsExceptionIndex 1 out of bounds for length 1
38
+
37
- 無し(未完成のため)
39
+ at CalcCakeSum.main(CalcCakeSum.java:28)
38
40
 
39
41
 
40
42
 
41
- ### 該当のソースコード
42
43
 
43
44
 
44
-
45
- JAVA ここに言語名を入力
45
+ JAVA
46
46
 
47
47
  ソースコード
48
48
 
49
+ ```ここに言語を入力
50
+
49
- class StationaryCakeSum {
51
+ class CalcCakeSum {
50
52
 
51
53
  public static void main (String[] args) {
52
54
 
53
55
 
54
56
 
55
- int total=
57
+ int cake = 0 ;
56
58
 
57
-
59
+ int sum = 0 ;
58
60
 
59
- double tax =1.08;
61
+ int totalPrice = 0 ;
60
62
 
61
-
63
+ double tax=1.08;
62
64
 
63
- double sum =total*tax;
64
65
 
65
-
66
66
 
67
- if(sum>=1000){
67
+ for( int i=0 ; i<args.length ; i+=2 ){
68
68
 
69
- double sum = sum*0.8
69
+
70
70
 
71
- }
71
+ if( args[i]=="ショートケーキ"){
72
72
 
73
+ cake = 320 ;
74
+
75
+
76
+
77
+ }else if( args[i]=="モンブラン" ){
78
+
79
+ cake = 350 ;
80
+
81
+
82
+
83
+ }else if( args[i]=="チョコレートケーキ" ){
84
+
85
+ cake = 370 ;
86
+
87
+
88
+
89
+ }else if( args[i]=="いちごのタルト" ){
90
+
91
+ cake = 400 ;
92
+
93
+
94
+
95
+ }else{
96
+
97
+ cake = 300 ;
98
+
99
+
100
+
73
- }
101
+ }
102
+
103
+
104
+
105
+ totalPrice = cake * Integer.parseInt(args[i+1]) ;
106
+
107
+ }
108
+
109
+ sum =(int)(totalPrice*tax);
110
+
111
+
112
+
113
+
114
+
115
+ if(sum>=1000){
116
+
117
+ sum= (int)(totalPrice*0.8);
118
+
119
+
120
+
121
+ sum=(int)sum;
122
+
123
+ }
124
+
125
+
126
+
127
+ System.out.println( "合計金額は" + sum + "円です。" ) ;
128
+
129
+ }
74
130
 
75
131
  }
76
132
 
77
-
133
+ ```
78
134
 
79
135
  ### 試したこと
80
136
 
81
- マンライン引数の扱いについて調べましたが、文字と数字の二つの情報処理す方法はわかりせんでした。
137
+ 自分なりにある程度のドをことが出来ました。ですが新たに
138
+
139
+ ①コンバイルまで済み、コマンドライン引数で複数のケーキ名を受け取った際に「ArrayIndexOutOfBoundsException」というエラーが生じる。②ショートケーキ以外のケーキ名を受け取ったときにも、ショートケーキの値であるint型の320が代入されます。という問題が生じました、助言いただけますでしょうか。

2

質問内容の修正

2021/07/15 08:25

投稿

ashura
ashura

スコア17

test CHANGED
File without changes
test CHANGED
@@ -6,17 +6,17 @@
6
6
 
7
7
  ・商品は以下の五種類とする。
8
8
 
9
-  ショートケーキ :320円
9
+  消しゴム :320円
10
10
 
11
-  モンブラン :350円
11
+  鉛筆 :350円
12
12
 
13
-  チョコレートケーキ:370円
13
+  定規:370円
14
14
 
15
-  いちごタルト :400円
15
+  の :400円
16
16
 
17
-  チーズケーキ :300円
17
+  ハサミ :300円
18
18
 
19
- ・「ケーキ名」「個数」を注文情報として、これをコマンドライン引数で受ける
19
+ ・「文房具名」「個数」を注文情報として、これをコマンドライン引数で受ける
20
20
 
21
21
  ・合計金額が1000円以上である場合は2割引きをする。
22
22
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  ソースコード
48
48
 
49
- class CalcCakeSum {
49
+ class StationaryCakeSum {
50
50
 
51
51
  public static void main (String[] args) {
52
52
 

1

質問内容の修正

2021/07/11 07:22

投稿

ashura
ashura

スコア17

test CHANGED
File without changes
test CHANGED
@@ -1,33 +1,81 @@
1
- 前提て、消しゴム 200円、鉛筆300円して
1
+ ### 前提・実現たいこ
2
2
 
3
- (以下はコマンドプロプトの表示)
3
+ 注文を受け(コマンドライ引数で受ける)、会計額を表示するプログラムを作りたいです。
4
4
 
5
- java file 消しゴム 1 鉛筆 2
5
+ (要件)
6
6
 
7
+ ・商品は以下の五種類とする。
8
+
9
+  ショートケーキ :320円
10
+
11
+  モンブラン :350円
12
+
13
+  チョコレートケーキ:370円
14
+
15
+  いちごのタルト :400円
16
+
17
+  チーズケーキ :300円
18
+
19
+ ・「ケーキ名」「個数」を注文情報として、これをコマンドライン引数で受ける
20
+
7
- 合計金額は800円です。 
21
+ 合計金額が1000以上ある場合は2割引きを
22
+
23
+ ・消費税は8%とし、小数点以下で切り捨てで会計学を算出する。
8
24
 
9
25
 
10
26
 
27
+ ### 発生している問題・エラーメッセージ
28
+
11
- と表記するようプログラム作りいで。商品名とは、その時によって変わるのいつ上記値ではありません。
29
+ 自分りに、要件たすソースコードを書きましたが、コマンドライン引数で受けたものをどう処理すればいいのか分かりません。
12
30
 
13
31
 
14
32
 
15
33
 
16
34
 
17
- ここに質問の内容を詳しく書いてください。
35
+ エラーメッセージ
18
36
 
19
- コマンドライン引数で受け取った商品名と個数を使って会計プログラムを作りたいのですが、アプローチの方法がいまいち思いつきません。
20
-
21
- 説明文がかなり不足ていると思いますがどうぞよろしくお願いいします。
37
+ (未完成のめ)
22
38
 
23
39
 
24
40
 
41
+ ### 該当のソースコード
25
42
 
26
43
 
27
44
 
45
+ JAVA ここに言語名を入力
46
+
47
+ ソースコード
48
+
49
+ class CalcCakeSum {
50
+
51
+ public static void main (String[] args) {
52
+
53
+
54
+
55
+ int total=
56
+
57
+
58
+
59
+ double tax =1.08;
60
+
61
+
62
+
63
+ double sum =total*tax;
64
+
65
+
66
+
67
+ if(sum>=1000){
68
+
69
+ double sum = sum*0.8
70
+
71
+ }
72
+
73
+ }
74
+
75
+ }
28
76
 
29
77
 
30
78
 
79
+ ### 試したこと
31
80
 
32
-
33
- JAVAここ言語名入力
81
+ コマンドライン引数の扱いついて調べましたが、文字と数字の二つの情報処理する方法はわかりませんでした。