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

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

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

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

Q&A

解決済

2回答

1499閲覧

1000より大きく5000円以下の分について10%OFF、5000円より大きい分について20%割引にする というプログラムを作りたい

fresh_fish

総合スコア20

Java

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

0グッド

0クリップ

投稿2020/05/24 06:08

編集2020/05/24 07:01

java

1コード 2/*-< 演習:Ex1_14_2 >--------------------------------- 3コマンドライン引数から1つ以上の数値を受け取り、この1つ1つの数値を購入した商品の定価としたとき、 4合計金額(税込)を求め、更に割引を利かせた金額を表示するプログラムを作りたい。 5mainメソッドの内容は書き換えずに処理が通るようなメソッドをコメントに従って書いてください。 6----------------------------------------------------*/ 7public class Ex1_14_2 { 8 9 //!!!mainメソッドの処理は書き換えないでください!!! 10 public static void main (String[] args) { 11 12 int totalPrice = 0 ; //購入した商品の合計金額 13 14 //コマンドライン引数から購入した商品の合計金額(定価)を取得 15 for(int i = 0 ; i < args.length ; i++ ){ 16 totalPrice += Integer.parseInt( args[i] ); 17 } 18 19 //discountメソッドを使って割引を適用し、割引後の金額を取得 20 int discountedPrice = discount( totalPrice ); //割引後の金額 21 22 //calcTaxPaymentメソッドを使って支払金額(税込)を取得 23 int taxPayment = calcTaxPayment( discountedPrice ); //支払金額(税込) 24 25 //支払金額(税込)を表示 26 System.out.println("割引後の支払金額:" + taxPayment + "円" ); 27 28 } 29 30 /* 31 **以下の仕様を持つメソッドcalcTaxPaymentを作成してください。 32 ** - 引数として受け取った値の税込価格(消費税は8%とする)を計算して返す 33 ** - 税込価格は整数(小数点以下切り捨て)で返す 34 */ 35 static int calcTaxPayment( int num1 ){ //アンダーバーを適切な内容に書き換えてください 36 37 double tax = 1.08 ; 38 39 double extraPrice = num1 * tax; 40 41 return (int)extraPrice ; 42 43 44 } 45 46 /* 47 **以下の仕様を持つメソッドdiscountを作成してください。 48 ** - 引数として受け取った値が1000以上5000以下の場合、1000より大きい分について10%割引にする 49 ** - 引数として受け取った値が5000より大きい場合、1000より大きく5000円以下の分について10%OFF、5000円より大きい分について20%割引にする 50 ** - 値引き額は小数点以下切り捨てで計算する(キャストを使いましょう) 51 ** - 割引金額の上限は5000円とする 52 */ 53 static int discount( int num2 ){ 54 55 double wari = 0.9; 56 57 double exprice = 0.0; 58 59 if (1000 <= num2 || num2 <= 5000){ 60 61 exprice = (num2 - 1000) * wari; 62 63 exprice += 1000; 64 65 }else if(5000 < num2){ 66 67 68 69 return (int)exprice; 70 71 } 72}```ここに言語を入力 73コード

ここまでは出来たのですが

引数として受け取った値が5000より大きい場合、1000より大きく5000円以下の分について10%OFF、5000円より大きい分について20%割引にする
割引金額の上限は5000円とする

のプログラムが書けません

問題の解釈はできているのですが知識が少なく対応するプログラムが当てはめられないという状況です

わかることが少なくどうしても投げやりのような質問になっていしまいますがよろしくお願いします

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

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

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

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

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

y_waiwai

2020/05/24 06:13

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください で、しつもんはなんでしょうか。
dodox86

2020/05/24 06:19

> やり方がイマイチわかりません と言うのはプログラム自体が書けないのか、プログラムはおいておいて、問題をどう解釈したら良いか分からないのか、どちらでしょうか。例えば6000円の場合はどういう計算になりますか。(<それが説明できなければプログラムは書けません) 更に「割引金額の上限は5000円とする」にも対応する必要があります。
fresh_fish

2020/05/24 07:06

回答ありがとうございます 問題の理解はしているがプログラムが書けないと言う質問でした 6000円の場合 4000 * 0.1 = 400 1000 * 0.2 = 200 400 + 200 = 600 6000 -600 = 5400 こうなると解釈しています
guest

回答2

0

ベストアンサー

引数として受け取った値が5000より大きい場合、1000より大きく5000円以下の分について10%OFF、5000円より大きい分について20%割引にする

考え方としては、まず

  • 10%割引分の計算。1000より大きく5000円以下の分はすなわち4000円。4000円の10%は400円。つまり固定で400円分は割引です。
  • 次に5000円超過分の計算は、1000円分の時と同じように、引数の金額から5000円引いた残りの20%を割引金額とします。
  • 最初の400円と20%割引分を合計したものが5000円以下ならその合計を、そうでなければ5000円を答えとして返します。

なお、提示の方法(引数の金額に0.9をかける)はおそらくNGです。金額0.9の切り捨て金額-金額*0.1の切り捨ては結果が違ってきます。
1234円とかで計算してみてください。(出題側としてはしてやったりだと思う)
それも踏まえ、1000円以上5000円以下の計算方法も見直すべきです。

投稿2020/05/24 06:22

hope_mucci

総合スコア4447

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

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

fresh_fish

2020/05/24 07:32

回答を参考に自分なりに試してみた結果解決しました! 分かりづらい質問に答えていただきありがとうございました
guest

0

if文の課題としてどうなの?というのは置いておいて。

金額から1000を引いて0.1をかけた割引を算出します。(※5000円以上の0.1割分も、ここで計算)
金額から5000を引いて0.1をかけた割引を算出します。(上記理由のため、0.2ではないです)

どちらの金額マイナスの場合は0として扱います。

上記2つの合計と5000を比較して小さい方を割引金額とします。

この計算で、

引数として受け取った値が1000以上5000以下の場合、1000より大きい分について10%割引にする
5000より大きい場合、1000より大きく5000円以下の分について10%OFF、5000円より大きい分について20%割引にする

は満たせます。

投稿2020/05/24 07:42

momon-ga

総合スコア4820

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問