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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

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

Q&A

解決済

5回答

467閲覧

if構文の使い方について

horizon

総合スコア21

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

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

0グッド

0クリップ

投稿2019/04/25 04:48

以下のプログラムだと、入力時に「d」といった文字を入力されるとエラーを起こして止まってしまいます。

if文の勉強もしたいため、if文を使って解決する方法を教えて下さい。

import java.util.Scanner; public class test { public static void main(String[] args) { System.out.println("キーボードから半角数字で入力してください。500を超えたら終了します。"); Scanner scan = new Scanner(System.in); int num = scan.nextInt(); for(;num<500;){ System.out.println("現在の数値は「"+num+"」です。"); System.out.println("続いての数値を入力してください。"); String newnum = scan.next(); int putin = Integer.parseInt(newnum); num = num + putin; } System.out.println("現在の数値は「"+num+"」です。"+ "\n" + "500を超えたためプログラムを終了します。"); } }

お願いします。

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

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

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

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

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

guest

回答5

0

ベストアンサー

Scanner.nextIntは、整数として読めないものが来ると例外が飛びますOracle)。

一般に、例外でエラーを起こすものに対してはcatchして処理を行うしかないのですが、この場合に限ってはScanner.hasNextInt()というメソッドがあるので、事前にチェックすることができます。if(!scan.hasNextInt())などのように、「数値でなかった場合」のぶん機が可能です。

投稿2019/04/25 05:23

maisumakun

総合スコア145183

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

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

0

入力時に「d」といった文字を入力されるとエラーを起こして止まってしまいます。

対応方法は以下の4点になります。
・ScannerクラスのhasNextIntメソッドで判定する
・try-catchでInteger.parseIntの例外を利用した判定をする
・正規表現で判定する
・自分しか使わないor仕様を知っている人しか使わないのであれば、イレギュラーな入力は考えないものとする

1行数値1つであればhasNextInt()で事足りるかと思います。
空白区切りになっているとかであれば例外判定の方が良いでしょうか。

java 標準入力 数値判定 とかで検索すればそこそこ出てくると思います。

if文の勉強もしたいため、if文を使って解決する方法を教えて下さい。

とあるので、hasNextInt()が無難ですかね。
まずは出てきたキ-ワードで調べてみてください。

投稿2019/04/25 05:21

dice142

総合スコア5158

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

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

0

Java

1public static void main(final String[] args) throws Exception { 2 System.out.println("キーボードから半角数字で入力してください。500を超えたら終了します。"); 3 Scanner scan = new Scanner(System.in); 4 int num = 0; 5 6 for (;;) { 7 String newnum = scan.next(); 8 /* 9 * ここで数字かどうかのチェック。 10 * 数字かどうかのチェックは案外難しいのですが、 11 * 質問内容はあくまでもifの使い方ということですので、今は簡易的なチェックにしています。 12 * あとはお好きにしてください。 13 */ 14 if (!newnum.matches("-?\d+")) { 15 System.out.println("半角数字で入力してください。"); 16 continue; 17 } 18 num += Integer.parseInt(newnum); 19 if (num >= 500) { 20 System.out.println("現在の数値は「" + num + "」です。" + "\n" + "500を超えたためプログラムを終了します。"); 21 break; 22 } 23 System.out.println("現在の数値は「" + num + "」です。"); 24 System.out.println("続いての数値を入力してください。"); 25 } 26}

hasNextInt版

みなさんが答えているhasNextIntだとどうもうまくいかないと思って、解答にするのはやめていたんですが、
原因が分かったので追記しときます。こちらの方がいいと思います。
hasNext系は次にカーソル進まないんですね。まぁ当然か。すみません、こっちの話です。

Java

1if (!scan.hasNextInt()) { 2 System.out.println("半角数字で入力してください。"); 3 scan.next(); 4 continue; 5}

投稿2019/04/25 05:21

編集2019/04/25 05:46
root_jp

総合スコア4666

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

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

0

そのままint型の変数に突っ込むのはなく、半角数値かチェック(バリデーション)を入れると良いです。
[java 半角数値 チェック]で検索するとサンプルコードは結構出てきますので色々試してみてください。

投稿2019/04/25 05:11

m.ts10806

総合スコア80850

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

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

0

お初です。

サンプルコードなど用意せずの質問すみません????

intにしてるので数字しかだめだと思いますが。

間違っていたらすみません????

投稿2019/04/25 05:13

mash-716

総合スコア16

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

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

m.ts10806

2019/04/25 05:26

回答以外の文言の方が多くてどこが回答なのか分かりづらいと思いますので、内容精査されては。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問