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

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

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

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

Q&A

解決済

2回答

2806閲覧

マイナスから入力値までの和の出し方について

kixx

総合スコア14

Java

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

0グッド

0クリップ

投稿2019/12/18 04:19

前提・実現したいこと

Javaを勉強中です。
以下の問題について、マイナスの入力値を入れた場合でも正の値として認識されているようです。
作成したコードについて、どこを直せば正しい結果が得られるのかアドバイスをいただきたいです。
よろしくお願いいたします。

変数 int num にシステムから入力値が与えられます。
下記のメソッドを作成してください。
メソッドを作成したら、mainにてそのメソッドを呼出し、下記の条件分岐を実装してください。
なお、メソッドの呼び出し時の実引数は、入力値である変数 int num を設定してください。

calculationメソッド
0から数値型の引数までの数値の和を戻り値としてください。

mainメソッドでの条件分岐
戻り値が200以上の場合、「200以上です」と出力。
戻り値が100以上200未満の場合、「100以上200未満です」と出力。
戻り値が100未満の場合、「100未満です」と出力。
戻り値が0以下の場合、「数値が不正です」と出力。

01
入力値 1
期待値 100未満です
02
入力値 18
期待値 100以上200未満です
03
入力値 20
期待値 200以上です
04
入力値 -1
期待値 数値が不正です

発生している問題・エラーメッセージ

【出力結果】 100未満です 100以上200未満です 200以上です 100未満です

該当のソースコード

Java

1import java.util.Scanner; 2public class Main { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in); 5 String text = scan.next(); 6 int num = Integer.parseInt(text); 7 int total = calculation(num); 8 9 if(total >= 200){ 10 System.out.print("200以上です"); 11 }else if(total >=100 && total < 200){ 12 System.out.print("100以上200未満です"); 13 }else if(total < 100){ 14 System.out.print("100未満です"); 15 }else if(total < 0){ 16 System.out.print("数値が不正です"); 17 } 18 } 19 20 public static int calculation(int num){ 21 int sum = 0; 22 for(int i=0;i<=num;i++){ 23 sum += i; 24 } 25 return sum; 26 } 27}

試したこと

−1から0にいくまでに+1されているから「100未満です」という結果が出ているのだと思うのですが、、
どこを直したら良いのかわからず詰まってしまいました。

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

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

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

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

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

m.ts10806

2019/12/18 04:23

parseIntした結果をデバッグ確認してみてください。
kixx

2019/12/18 05:13

ご回答いただき、ありがとうございました。
m.ts10806

2019/12/18 05:15

回答ではないです。 「質問への追記・修正の依頼」です。 やってみて追記いただきたいのです
guest

回答2

0

戻り値が100未満の場合、「100未満です」と出力。
戻り値が0以下の場合、「数値が不正です」と出力。

この記述の場合, 100未満の出力条件のほうに「暗黙の条件」が含まれています. それは

『戻り値が(0より大きく)100未満の場合、「100未満です」と出力。』

です.
何も考えずに書かれた通りに条件を並べるとこのテに引っかかりますので, ご注意ください.

また, 深読みすると逆にも考えられます.
『この条件通りに書いたのでは「数値が不正です」が出力されない』ことを体験すること, もしくはさらに『修正するにはどうすれば良いのかを考えること』が目的かもしれないということです.
ですので, どれが「正しい結果」なのかは出題者次第かもしれません.

投稿2019/12/18 05:00

編集2019/12/18 15:49
jimbe

総合スコア12639

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

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

kixx

2019/12/18 05:16

ご回答いただきました通り、この経験のおかげで今後の考え方の幅が広がりました。 ご回答いただき、ありがとうございました。
guest

0

ベストアンサー

戻り値が100未満の場合、「100未満です」と出力。

calculationをマイナスの値で実行した結果も100未満なのは間違いないので、マイナスの場合を別にしたければ元の値がマイナスかを別途チェックする必要があります。

投稿2019/12/18 04:23

編集2019/12/18 04:26
maisumakun

総合スコア145183

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

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

maisumakun

2019/12/18 04:27

現状では、calculation(-1)の実行結果は0です(ループは1度も回りません)。
kixx

2019/12/18 05:13

ご回答を参考にシンプルに考えてみたら解けました! 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問