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

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

ただいまの
回答率

90.62%

  • Java

    13477questions

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

配列priceから消費税を載せて、配列price2を返すメソッド

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,527

R.lawliet

score 44

課題の以下の問いに挑んでいます。
大体は出来たと思うのですが、消費税をprice2に載せた配列で上に返す事が出来ません。
ここの処理を上手く出来る方法を教えていただけないでしょうか。

該当箇所、★


/*
SubClass07クラスを作成し、以下の2つのメソッドを作成。
1
引数で受け取った値に消費税をつけて戻すtaxメソッドを作成。
 *消費税は5%で計算,小数点以下は切捨て。
2
引数で受け取ったint型配列の合計を算出,
taxメソッドを呼びだし、合計に消費税をつけた値を戻すtotalメソッドを作成。

 mainメソッドからtotalメソッドを呼び出し、totalメソッドから
 taxメソッドを呼び出して、算出した結果をmainメソッドで出力するプログラムを作成。*/
package class07;

public class ClassAdd07 {

    public static void main(String[] args){
        //07呼び出し
        SubClass07 sub = new SubClass07();
        
        int[] price = {200,800,500,1100,300};
        
        //taxメソッドを呼んだあとに合計するtotalメソッド呼び出し
        int sum = sub.total(price);
        
        System.out.println("支払い合計は" + sum + "円です。");
    }
}

class SubClass07{

    public int total(int[] price) {
        //消費税を入れるtaxメソッドを呼んだ後に合計
        tax(price);
        
        //合計を求めるメソッド
        int sum = 0;
        for(int i:price2){
            sum += i;
        }
        return sum;
    }

    private int[] tax(int[] price) {
        //★消費税を追加するメソッド
        int[] price2 = new int[5];
        
        for(int i = 0; i < price.length; i++){
            price2[i] = (int)(price[i] * 1.05);
        }
        return price2;
    }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

+1

price2を作る必要はありませんでした。

配列→合計→1.05
これで終わる内容だったのですが、

配列→配列×1.05→配列×1.05を合計
思考の順番がこっちになっていたのが原因だった様です。

しかしまだ微妙にエラーが残っています。。。
型 SubClass07 のメソッド tax() は引数 (int) に適用できません

エラー修正完了致しましたので更新します。

該当箇所、★

/*
package class0709;

public class ClassAdd07 {
    public static void main(String[] args){
        int[] price = {200,800,500,1100,300};
        //07呼び出し
        SubClass07 sub = new SubClass07();
        
        //合計してtaxを呼ぶtotalメソッド07から呼び出し
        int sum = sub.total(price);
        
        System.out.println("支払い合計は" + sum + "円です。");
    }
}

class SubClass07{
    //合計sum2を求めるメソッド
    public int total(int[] price) {
            int sum2 = 0;
            for(int i:price){
                sum2 += i;
            }
            tax(sum2);★
            return tax(sum2);★
    }

    private int tax(sum2){
        //消費税を載せる
        (double)(sum2 * 1.05);
    }
}
↓修正後
修正箇所★
public class ClassAdd07 {
    public static void main(String[] args){
        int[] price = {200,800,500,1100,300};
        //07呼び出し
        SubClass07 sub = new SubClass07();
        
        //合計してtaxを呼ぶtotalメソッドを07から呼び出し
        int sum = sub.total(price);
        
        System.out.println("支払い合計は" + sum + "円です。");
    }
}
class SubClass07{
    //合計sum2を求めるメソッド
    public int total(int[] price) {
        int sum2 = 0;
        for(int i:price){
            sum2 += i;
        }
        return tax(sum2);    
    }
    private int tax(int sum2) {
        //消費税を載せる
        int sum;//★
        sum = (int)(sum2 * 1.05);//★
        return sum;//★
    }
}

nagiseさんの仰る通り、returnが抜けていたのと、
消費税を載せた後の金額はint表示なので、
(double)ではなく(int)でくくると良かったのですね。

皆様のお力添えありがとうございました。

追記:ご指摘頂いたのでもうちょっと修正加えました。
public class ClassAdd07 {
    public static void main(String[] args){
        int[] price = {200,800,500,1100,300};
        //07呼び出し
        SubClass07 sub = new SubClass07();
        
        //合計してtaxを呼ぶtotalメソッドを07から呼び出し
        int sum = sub.total(price);
        
        System.out.println("支払い合計は" + sum + "円です。");
    }
}
class SubClass07{
    //合計sum2を求めるメソッド
    public int total(int[] price) {
        int sum2 = 0;
        for(int i:price){
            sum2 += i;
        }
        return tax(sum2);//★    
    }
    private int tax(int sum2) {
        //消費税を載せる
        return (int)(sum2 * 1.05);//★
    }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/09 20:05

    >型 SubClass07 のメソッド tax() は引数 (int) に適用できません
    と言われているのですから、
    taxの呼び出し方か、
    taxの定義がおかしいのです。

    キャンセル

  • 2015/04/09 21:47

    構文エラーは一箇所起きると芋づる式にいろいろ起きる時があるので
    エラーメッセージを正しく読み取るのは難しい時がありますね。

    SubClass07のtaxメソッドはreturnが抜けているようですよ。

    キャンセル

  • 2015/04/09 23:16

    できればコード部分はマークアップしてください

    キャンセル

  • 2015/04/10 13:30

    無駄があるのでその指摘をば.
    SubClass07#totalメソッドのreturn直前の文が完全に無意味です.
    SubClass07#taxも return (int) (sum2 * 1.05); だけで十分だと思います.

    キャンセル

+1

メソッドのin / outをまず意識するとよいのではないでしょうか。
基礎として、メソッドは引数で値を渡し、returnで加工した値を返すというものです。

何を渡して何を返すのか。問題文からは以下のように読み取れます。

1.taxメソッド : 引数 価格(int型)、 戻り値 消費税5%を加えた価格(int型)
2.totalメソッド : 引数 価格の配列(int配列型)、 戻り値 合計に消費税をつけた値(int型)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/09 19:50

    メソッドは一昨日から学び始めたのですが難しいですね、
    まだ基礎が全然固まっていないなと再確認しました。
    自己解決はまだ途中なので、出来れば最後の詰めの訂正をお願いしますorz

    キャンセル

+1

total内でtaxメソッドの戻り値を受け取らずに捨ててしまってます。
というかこのコードだと
totalメソッド内でprice2が定義されていないとコンパイラなどから指摘されませんか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/09 19:51

    色々と支離滅裂な事になっておりました汗
    頭の中を1から整理したらある程度上手く通りました。
    ありがとうございます。

    キャンセル

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Enumの使い方

    プログラム中にあるマジックナンバーを理解できる形に直そうと思いEnumを使おうとしているのですが、Enumの使い方がわかりません。 例えばプログラムで if (sum >= 50)

  • 解決済

    javaでセッター・ゲッター・カプセル化について

    前提・実現したいこと こんにちは。 今年度から社会人となりプログラミングを勉強しているのですが表題のセッター・ゲッター・カプセル化がうまくいきません。 使っているのはec

  • 解決済

    非同期処理 wait,notifyAllの使い方

    import java.util.Collections; import java.util.LinkedList; import java.util.List; import j

  • 解決済

    100になる直前の加算結果出力

    javaで開始値と終了値を入力してその間の偶数を加算していき、合計が100を超えたら「数値が100を超えたため、処理を中止します。」とメッセージを出し、かつ合計が100になる前の加

  • 解決済

    オブジェクト型配列について

    public class Item{ String name; int price = 100; } public class main{ public

  • 解決済

    Loopにならない

    前提・実現したいこと 一年間の保険の合計金額を表示する問題です。15歳以下は保険に加入することができない、16から19歳は15%増、20から24は5%増、25歳以上は10%引きと

  • 解決済

    CSVファイルのデータ集計

    前提・実現したいこと javaでCSVファイルのデータを読み込み、カテゴリ別に価格の総合を計算し、その結果を画面に出力し、CSVファイルで保存したいです。 CSVファイルの読み

  • 解決済

    for,whileを使わないでループする

     前提・実現したいこと forとかwhileを使わないでループ文を書くには何を使えばいいでしょうか iが100になるまで加算していく・・・みたいなプログラムです  発生している

同じタグがついた質問を見る

  • Java

    13477questions

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