質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2515閲覧

Javaについて学んでいます。コマンドライン引数の足し算について

nageyari

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/07/25 17:38

編集2020/07/25 17:56
コード ```コマンドライン引数で10 50 100 1000 の数字を任意の数だけ入力し合計を出すプログラムを作っています。 ただし、1 5 が入力された時は 一円玉は使えません。 五円玉は使えません と表示されるようにし、それ以外の数字Xが入力されたときには「Xは硬貨として適切ではありません。」と表示させたいです。 例 1 5 10 100 777 と入力 警告 一円玉は使えません 警告 五円玉は使えません ただ今の金額は110円です 777は硬貨として適切ではありません。 しかし実行してみると 警告 :一円玉は使えません。 警告 :五円玉は使えません。 警告 :110は硬貨として適切ではありません。 ただ今の金額は110円です と表示されます。 改善点、アドバイスなどいただけると幸いです。 分岐構文 制御構文 繰り返し構文 配列まで学習しました。 書いていて気づいたのですが以下のソースコードの System.out.println("警告 :"+money+"は硬貨として適切ではありません。"); のmoneyはおかしいですね。 ただこのmoneyの部分に何を入れてよいのか分かりません。 そもそもswitchを使うのがナンセンスなんでしょうか? ```Java public class aaa13 { public static void main (String[] args){ int coin = args.length; int money = 0; for(int i = 0; i < coin; i++){ switch(Integer.parseInt(args[i])) { case 1: System.out.println("警告 :一円玉は使えません。"); break; case 5: System.out.println("警告 :五円玉は使えません。"); break; case 10: case 50: case 100: case 1000: money += Integer.parseInt(args[i]); break; default: System.out.println("警告 :"+money+"は硬貨として適切ではありません。"); } } System.out.println("ただ今の金額は"+money+"円です"); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/07/25 17:47

コマンドライン引数で「1 5 10 100 777 10 10 100」と入力したとき、どのような出力を期待しますか? 警告 一円玉は使えません 警告 五円玉は使えません ただ今の金額は110円です 777は硬貨として適切ではありません。 ただ今の金額は230円です でしょうか。
nageyari

2020/07/25 17:49

早急な回答ありがとうございます。 警告 :一円玉は使えません。 警告 :五円玉は使えません。 警告 :110は硬貨として適切ではありません。 ただ今の金額は230円です と表示されました。
nageyari

2020/07/25 17:52

あ、すいません訂正します!
dodox86

2020/07/25 17:52

> と表示されました。 いえ、今現在結果としてどう表示されるかではなく、質問者さんが「どう表示したいか(=プログラムの仕様)」をお聴きしています。なお、これは回答ではなく、質問自体への質問と指摘です。
nageyari

2020/07/25 18:07

コマンドラインに任意の整数を打ち込み10 50 100 1000 の数字のみを足し合計を出したいです 1 5 10 100 777 10 10 100 ならば 警告 :一円玉は使えません。 警告 :五円玉は使えません。 警告 :777は硬貨として適切ではありません。 ただ今の金額は230円です と表示させたいです。
dodox86

2020/07/25 18:14

> コマンドラインに任意の整数を打ち込み10 50 100 1000 の数字のみを足し合計を出したいです > 1 5 10 100 777 10 10 100 ならば > 警告 :一円玉は使えません。 > 警告 :五円玉は使えません。 > 警告 :777は硬貨として適切ではありません。 > ただ今の金額は230円です それですと、質問文中の以下の例と矛盾します。 > 例 1 5 10 100 777 と入力 > 警告 一円玉は使えません > 警告 五円玉は使えません > ただ今の金額は110円です > 777は硬貨として適切ではありません。 質問文中の例は間違いで、最後に合計値として「ただ今の金額はnnn円です」と出力したい、ので合っていますか?
dodox86

2020/07/25 18:31

しかしながら最後に合計値として出力するのであれば、「ただ今の金額は...」の"ただ今"はちょっと違うようにも思います。その考え方ですと質問文の当初の例のように、足している途中で出力する必要があるときに「ただ今の金額は...」と出力するのが合っているでしょう。質問者さんがどちらとしたいのかでプログラム(仕様)が変わってきます。どちらも可能ですが、最後に合計を表示する方が当然、簡単です。
nageyari

2020/07/25 18:44

分かりづらい例を出してしまい申し訳ございません。。 途中で出力ではなく、最後に合計を表示させたいのです。
nageyari

2020/07/25 18:48 編集

日本語がおかしかったです「ただ、今の」という意味ではなく「ただいまの、合計金額は」と最後に表示させたいです。訂正しておきます。
dodox86

2020/07/25 18:55

> 日本語がおかしかったです「ただ、今の」という意味ではなく「ただいまの、合計金額は」 受け取り方が微妙ですが、"ただいま"とはその時点の、と言う意味でありますから、最後に一回合計を出力するのであれば、「ただいまの」は余計だと思います。回答は既にいただいてますので、そちらをご覧いただくのが良いと思います。(ちなみに私も同じコードになっていましたので、回答は止めておきます)
guest

回答1

0

ベストアンサー

まぁおそらくこういう事をやりたいんだろうと思いますが。

Diff

1public class aaa13 { 2 public static void main (String[] args){ 3- int coin = args.length; 4 5 int money = 0; 6 7 8- for(int i = 0; i < coin; i++){ 9- switch(Integer.parseInt(args[i])) { 10+ for(int i = 0; i < args.length; i++){ 11+ int coin = Integer.parseInt(args[i]); 12+ switch(coin) { 13 14 case 1: 15 System.out.println("警告 :一円玉は使えません。"); 16 break; 17 case 5: 18 System.out.println("警告 :五円玉は使えません。"); 19 break; 20 21 case 10: 22 case 50: 23 case 100: 24 case 1000: 25- money += Integer.parseInt(args[i]); 26= money += coin; 27 28 29 break; 30 default: 31- System.out.println("警告 :"+money+"は硬貨として適切ではありません。"); 32+ System.out.println("警告 :"+coin+"は硬貨として適切ではありません。"); 33 34 } 35 36 } 37 System.out.println("ただ今の金額は"+money+"円です"); 38 } 39}

投稿2020/07/25 18:45

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問