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

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

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

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

Q&A

解決済

1回答

994閲覧

【Progate】Javaの道場レッスンで、正しい値が出力できているのに通過しない

RaiseSkill

総合スコア50

Java

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

0グッド

0クリップ

投稿2022/06/29 09:11

編集2022/06/29 12:08

【前提・実現したいこと】
ProgateでJavaの道場問題をしている者です。

標準入力からの入力では、正しい出力がなされており、エラー内容を試してみても問題がないにも関わらず、エラー表示されるため、解決方法や予備知識など、ご教授いただければ幸いです。

<課題内容>
・標準入力:氏名、名字、年齢、身長、体重の入力
・標準出力:以下の出力課題
「名前は〇〇(フルネーム)です」
「年齢は〇〇歳です」
「(20歳の条件分岐にて)成年者です/未成年者です」
「身長は〇〇mです」
「体重は〇〇kgです」
「BMIは〇〇です」

【発生している問題・エラーメッセージ】
イメージ説明

・左側:今回の課題文
・中央下部:エラー内容
・右上:当方コード出力結果
・右下:見本コード出力結果

【該当のソースコード】
▶Main.java

import java.util.Scanner; class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //「名前:」 System.out.print("名前:"); String firstName = scanner.next(); //「名字:」 System.out.print("名字:"); String lastName = scanner.next(); //「年齢:」 System.out.print("年齢:"); int age = scanner.nextInt(); //「身長(m):」 System.out.print("身長(m):"); double height = scanner.nextDouble(); //「体重(kg):」 System.out.print("体重(kg):"); double weight = scanner.nextDouble(); Person.introduction(firstName, lastName, age, height, weight); //Debug //System.out.println("-------------------------"); //Person.introduction("Kate", "Jones", 27, 1.65, 50.0); } }

▶Person.java

class Person{ public static String fullName(String firstName, String lastName) { return firstName + " " + lastName; } public static double bmi(double height, double weight) { return Math.round(weight / height / height); } public static void introduction(String firstName, String lastName, int age, double height, double weight) { System.out.println("名前は" + fullName(firstName, lastName) + "です"); System.out.println("年齢は" + age + "歳です"); if(age >= 20) { System.out.println("成年者です"); } else { System.out.println("未成年者です"); } System.out.println("身長は" + height + "mです"); System.out.println("体重は" + weight + "kgです"); System.out.println("BMIは" + bmi(height, weight) + "です"); } }

【自分で調べたことや試したこと】
自分で様々な値を何度も試行したり、エラー内容の値を何度試行しても、正解には至らず、上記エラーメッセージを繰り返してしまいます。

原因や考えられるエラー等ありましたら、ご教授いただければ幸いです。
よろしくお願い致します。

【使っているツールのバージョンなど補足情報】
・Progate
・Microsoft Surface PRO (Windows 10 64bit)

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

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

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

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

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

BeatStar

2022/06/29 09:18

質問者さん、ご自身の質問を全くの赤の他人が読んで理解できると思いますか? 情報があまりにも少なすぎます。
BeatStar

2022/06/29 09:19

コードは書かれた通りにしか動きません。
dodox86

2022/06/29 09:24

どの様な問題(どんな出力を求めているのか)かが分からないと、第三者には正しい答えの判断がつきませんよ。
hoshi-takanori

2022/06/29 10:07

問題文が分からないので答えようがありませんが、コードを読んだ感想としては、Person クラスが Person クラスになってないですね…。
RaiseSkill

2022/06/29 10:35

早速のご連絡ありがとうございます。 確かにどういった課題かが記名されておらず、分かりにくかったので、追記させて頂きました。
RaiseSkill

2022/06/29 10:41

>hoshi-takanori様 アドバイスありがとうございます。 Personクラスになっていない…とのことですが、再学習すべき課題は具体的に示すとどうなるでしょうか? 重ねて質問失礼します。
dodox86

2022/06/29 10:56

Personクラスと言う一般的なイメージからするとクラスっぽくないですね。 出力さえ合っていればクラスの内容はどうでもよいのかもしれませんが。 課題内容は > 「私は〇〇(フルネーム)です」 ... > 「(20歳の条件分岐にて)成人です/未成年です」 とありますが、出力はそうなっていないのでは? "私は"が無いし、成人か未成年かの出力も違うようです。こういう場合、一字一句、空白の有無も含めて同じでないとシステムの判定ではねられます。
dodox86

2022/06/29 11:00

> 一字一句、空白の有無も含めて同じでないとシステムの判定ではねられます。 システム(今回の場合はProgate)の判定基準にもよりますけれども。コードを投稿~複数のテストパターンで自動でシステムがそのコードを評価するようなものでは大抵そうです。
RaiseSkill

2022/06/29 11:09 編集

詳細なご回答ありがとうございます。 すみません。 提示した課題が「ざっくり」になってしまっていたので、一字一句課題の通りに修正させて頂きました。 プログラミングを学習していて、やはりその「一字一句」という言葉の重要性を改めて痛感されられます。
dodox86

2022/06/29 11:13

本当に今の提示内容で全てですか? 名字と名前の間のスペースの有無が不確かだし、身長はm単位、メートルですか? 一般的にはcm単位な気がすします。
RaiseSkill

2022/06/29 11:23 編集

名字と名前の間は半角スペースの指定があります。 加えて、一般的にはcmが基本ですが、この課題ではm表記となっております(追加画像をご参照ください)。 この道場トレーニングでは、課題を次々に進めていくことで、一つのプログラムができる構成になっています。
BeatStar

2022/06/29 11:32

@ 質問者さん 問題文にある「ヒント」や「つまったときはスライドやヒント…」を参考にしてみてください。
RaiseSkill

2022/06/29 13:54 編集

更新が度重なってすみません。 画像を一元化しました。 ・フルネームの半角スペース ・メートル表記 いずれも見やすくなったのではないかと思います。 >dodox86様 改めて以下の点から見ても、何が原因か皆目見当がつかないですね…。 hoshi-takanori様のご回答にもありました、Personクラスの問題からも、もう一度クラスについて復習してみたいと思います。
RaiseSkill

2022/06/29 12:12

…というよりも、画像を見て「見本」のBMI値が整数であることが分かりました。 修正し、成功次第また投稿させて頂きます。
dodox86

2022/06/29 12:14

@BeatStarさん、@RaiseSkillさん > 問題文にも「受け取った身長(m)と〜」とあるので ああ、なるほど、Progageの画面キャプチャー画像を見落としていました。ご指摘ありがとうございます。
dodox86

2022/06/29 12:22

ん? 問題文には「体重を出力しているコードの下で、」とありますが、体重を出力するコードまではすでに前の課題でクリアしていたり、もともとあったコードなのですか? BMIを計算する部分だけ追加なのでしょうか。
dodox86

2022/06/29 12:28

BMIを計算して出力する部分だけが今回の課題のポイントならば、見本の出力とは小数点以下が0でも出力しているかどうかが違っていますね。
hoshi-takanori

2022/06/29 13:38

道場問題って、これの「道場レッスン Java I」ってやつですよね? https://prog-8.com/courses/java お金を払わないと中身が見れないのでよく分かりませんが、レッスン概要を見る限り、私が「Person クラスが Person クラスになってない」と言った理由は、次の「学習レッスン Java IV」で解説されるようですね。
RaiseSkill

2022/06/29 13:59

@dodox86様 >ん? 問題文には「体重を出力しているコードの下で、」とありますが、体重を出力するコードまではすでに前の課題でクリアしていたり、もともとあったコードなのですか? はい、これは前の課題で、クリアして今度は次の課題(BMIの算出)です! >BMIを計算して出力する部分だけが今回の課題のポイントならば、見本の出力とは小数点以下が0でも出力しているかどうかが違っていますね。 解答になっているか分かりませんが、この問題文を見る限りは「四捨五入して整数にしろ」ということなんですかね?
RaiseSkill

2022/06/29 14:01

@hoshi-takanori様 >道場問題って、これの「道場レッスン Java I」ってやつですよね? https://prog-8.com/courses/java 正にソレです! >私が「Person クラスが Person クラスになってない」と言った理由は、次の「学習レッスン Java IV」で解説されるようですね。 ありがとうございます。 一応、一通りレッスンはこなしたのですが、また周回して復習してみたいと思います! ためになるアドバイスありがとうございます!
guest

回答1

0

自己解決

▶Person.java
>System.out.println("BMIは" + bmi(height, weight) + "です");

のbmiをint型にしたら無事に通過しました!
ご回答くださった皆様に心より感謝致します。ありがとうございました!

まだ理解不十分なところがあるため、再復習させて頂きたいと思います。

投稿2022/06/29 14:14

編集2022/06/29 14:15
RaiseSkill

総合スコア50

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問