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

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

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

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

Q&A

解決済

3回答

5910閲覧

[java]送料を算出するプログラムを作成

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2016/04/05 08:07

こんにちは。
独学でjavaを勉強しております。

今、表題の問題を解いているのですが、
壁にぶつかってしまいました。
下記のソースのpriceがreturnできず、
よくわからない状態です。
アドバイスいただけますと幸いです。
作成の条件、ソース構成は下記となっております。

[条件]
荷物の重さ 送料
5kg未満 500円
10kg未満 1000円
15kg未満 1500円
20kg未満 2000円
それ以上 配送できない

[ソース構成]

public class Java{ public static void main(String args[]){ コマンドライン引数から荷物の3辺の長さを取得する。 checktaisekiメソッドを使って荷物の体積を検査する。 体積からcheckjyuuryouメソッドを使って重量を取得する。 重量が規定値外であれば、 「サイズオーバーで配送できません」と表示する。 それ以外であれば、checkpriceメソッドから料金を取得し画面に表示する。 } checktaisekiメソッド(荷物の3辺の長さ){ 体積を計算 体積を返す。 } checkjyuuryouメソッド(体積){ 体積から重量を計算。 重量からを返す。 } checkpriceメソッド(重量){ 重量から送料割り出し返す。 } その他作成したメソッド{ } }

[自作ソース]

import java.io.*; public class Java{ public static void main(String args[]){ BufferedReader reader = new BufferedReader (new InputStreamReader(System.in)); try{ System.out.println("横幅を入力してください"); String str = reader.readLine(); int width = Integer.parseInt(str); System.out.println("縦幅を入力してください"); String str1 = reader.readLine(); int val = Integer.parseInt(str1); System.out.println("高さを入力してください"); String str2 = reader.readLine(); int height = Integer.parseInt(str2); int taiseki = checktaiseki(width,val,height); int jyuuryou = checkjyuuryou(taiseki); int price = checkprice(jyuuryou); System.out.println(price); }catch(IOException e){ System.out.println(e); } } public static int checktaiseki(int a, int b, int c){ return a * b * c; } public static int checkjyuuryou(int d){ int weight = (d * 10) / 1000; return weight ; } public static int checkprice(int i){ if(i<= 5){ int price = 500; System.out.println(price); }else if(i<= 10){ int price = 1000; System.out.println(price); }else if(i<= 15){ int price = 1500; System.out.println(price); }else if(i<= 20){ int price = 2000; System.out.println(price); }else{ System.out.println("サイズオーバーで配送できません"); } return price; } }

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

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

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

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

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

yuba

2016/04/05 08:13

Javaのバージョンは8ですか? それ以前ですか? (それによって模範的な回答がちょっと違ってきます)
退会済みユーザー

退会済みユーザー

2016/04/05 08:27

ご回答ありがとうございます。 バージョンは8です。 よろしくお願いいたします。
guest

回答3

0

変数priceのスコープを確認してみましょう。

投稿2016/04/05 08:18

wakuwaku

総合スコア386

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

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

退会済みユーザー

退会済みユーザー

2016/04/05 08:29

ご回答ありがとうございます。 priceのスコープですが、ほかの引数と同じような気がします。。 いかがでしょうか?
wakuwaku

2016/04/05 08:57

「他の引数」は何を指しているのでしょう?iでしょうか。 iのスコープはcheckprice関数内です。 変数のスコープは宣言したブロック{}内となりますので、 priceのスコープは、ifあるいはelseブロック内となります。
退会済みユーザー

退会済みユーザー

2016/04/05 11:32

ご回答ありがとうございます。 ようやく違いがわかりました! 助かりました!!
guest

0

ベストアンサー

Java

1public static int checkprice(int i) { 2 int price = 0; 3 if (i <= 5) { 4 price = 500; 5 System.out.println(price); 6 } else if (i <= 10) { 7 price = 1000; 8 System.out.println(price); 9 } else if (i <= 15) { 10 price = 1500; 11 System.out.println(price); 12 } else if (i <= 20) { 13 price = 2000; 14 System.out.println(price); 15 } else { 16 System.out.println("サイズオーバーで配送できません"); 17 } 18 return price; 19}

Javaの変数のスコープはブロックスコープです。
ブロックとは { から } までのことです。
つまり、if や else if の中で宣言された変数は、その中でしか有効でないため、
ブロックの外に出ると見えなくなるのです。

投稿2016/04/05 10:37

root_jp

総合スコア4666

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

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

退会済みユーザー

退会済みユーザー

2016/04/05 11:34

ご回答ありがとうございます! ようやくわかりました!! 今回スコープと初期化が疎かになっていたので、 改めて勉強し直します!! ありがとうございました!
guest

0

最後のメソッドcheckpriceにおける変数priceは各if文の中においてのみ有効となり、ifを抜けた後のreturnからはその値を参照することは出来ません。
メソッドの最初に宣言してifで代入するようにする必要があります。(ただこれだけだとまだエラーになります)

投稿2016/04/05 08:34

swordone

総合スコア20651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問