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

質問編集履歴

4

質問内容の修正

2021/07/16 16:45

投稿

ashura
ashura

スコア17

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
- at CalcCakeSum.main(CalcCakeSum.java:28)
18
+ コンバイルできているためなし
21
19
 
22
20
 
23
21
  JAVA
24
22
  ソースコード
25
23
  ```ここに言語を入力
26
- class CalcCakeSum {
24
+ class CalcThingSum {
27
25
  public static void main (String[] args) {
28
26
 
29
- int cake = 0 ;
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
- cake = 320 ;
36
+ thing= 320 ;
38
37
 
39
- }else if( args[i]=="モンブラン" ){
38
+ }else if( args[i].equals("鉛筆")){
40
- cake = 350 ;
39
+ thing = 350 ;
41
40
 
42
- }else if( args[i]=="チョコレートケーキ" ){
41
+ }else if( args[i].equals("定規")){
43
- cake = 370 ;
42
+ thing= 370 ;
44
43
 
45
- }else if( args[i]=="いちごタルト" ){
44
+ }else if( args[i].equals("の")){
46
- cake = 400 ;
45
+ thing= 400 ;
47
46
 
48
47
  }else{
49
- cake = 300 ;
48
+ thing= 300 ;
50
49
 
51
50
  }
52
51
 
53
- totalPrice = cake * Integer.parseInt(args[i+1]) ;
52
+ totalPrice = thing* Integer.parseInt(args[i+1]) ;
54
53
  }
55
- sum =(int)(totalPrice*tax);
56
-
57
54
 
55
+
58
- if(sum>=1000){
56
+ if(totalPrice>=1000){
59
- sum= (int)(totalPrice*0.8);
57
+ sum=totalPrice- (int)(totalPrice*0.2);
60
58
 
61
- sum=(int)sum;
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
- ①コンバイルまで済み、コマンドライン引数で複数のケーキ名を受け取った際「ArrayIndexOutOfBoundsException」というエラーが生じる。②ショートケーキ以外のケーキ名を受け取ったときも、ショートケーキの値であるint型の320が代入されす。いう問題が生じました、助言ただけでしょうか
67
+ 文房具名を5つ分け(thing~thing5という)そしてそれらの値まとめて加える処理をしました正し計算結果が得られせんでし
68
+
69
+ ```
70
+ thing* Integer.parseInt(args[i+1])+thing* Integer.parseInt(args[i+1])...
71
+ ```

3

質問内容の修正

2021/07/16 16:45

投稿

ashura
ashura

スコア17

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 StationaryCakeSum {
26
+ class CalcCakeSum {
26
27
  public static void main (String[] args) {
27
28
 
29
+ int cake = 0 ;
30
+ int sum = 0 ;
28
- int total=
31
+ int totalPrice = 0 ;
29
-
30
- double tax =1.08;
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
- double sum =total*tax;
55
+ sum =(int)(totalPrice*tax);
33
-
56
+
57
+
34
- if(sum>=1000){
58
+ if(sum>=1000){
59
+ sum= (int)(totalPrice*0.8);
60
+
35
- double sum = sum*0.8
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

質問内容の修正

2021/07/15 08:25

投稿

ashura
ashura

スコア17

title CHANGED
File without changes
body CHANGED
@@ -2,12 +2,12 @@
2
2
  注文を受け(コマンドライン引数で受ける)、会計額を表示するプログラムを作りたいです。
3
3
  (要件)
4
4
  ・商品は以下の五種類とする。
5
-  ショートケーキ :320円
5
+  消しゴム :320円
6
-  モンブラン :350円
6
+  鉛筆 :350円
7
-  チョコレートケーキ:370円
7
+  定規:370円
8
-  いちごタルト :400円
8
+  の :400円
9
-  チーズケーキ :300円
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 CalcCakeSum {
25
+ class StationaryCakeSum {
26
26
  public static void main (String[] args) {
27
27
 
28
28
  int total=

1

質問内容の修正

2021/07/11 07:22

投稿

ashura
ashura

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,17 +1,41 @@
1
+ ### 前提・実現したいこと
1
- 前提として消しゴ 200円、鉛筆300円として
2
+ 注文を受け(コマンドライン引数で受ける)会計額を表示するプログラを作りたいです。
3
+ (要件)
4
+ ・商品は以下の五種類とする。
2
- (以下はコマンドプロンプの表示)
5
+  ショーケーキ :320円
3
- java file 消しゴム 1 鉛筆 2
6
+  モンブラン :350円
7
+  チョコレートケーキ:370円
8
+  いちごのタルト :400円
9
+  チーズケーキ :300円
10
+ ・「ケーキ名」「個数」を注文情報として、これをコマンドライン引数で受ける
4
- 合計金額は800円です。 
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
- JAVAこに言語名を入力
40
+ ### 試した
41
+ コマンドライン引数の扱いについて調べましたが、文字と数字の二つの情報を処理する方法はわかりませんでした。