数値の代わりに + を入れてみたのですが
Scanner周りはバッファが不意に残ったりするので,nextInt等を使う場合while(true)に入れるのは危険だったりします.
可能な限りnextLineで読み込んで(=入力を読み切って),あとからパースを試みるのが良いと思われます.
同様の理由で,無限ループの内部にtry-catchを入れると,catchした時点での中途半端な処理が次の周回に残って危険ですので,確実に脱出できないtryの書き方は控えてください.
Like!
タイトルの通りなのですが、
例えば、変数numがint型でないときというような感じです。
Scannerで入力したとき数字でなければ警告文を出したいという状況です。
出ているエラーメッセージを入力
例)
NameError (uninitialized constant World)
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
ソースコードを入力
例)
System.out.println("数値を入力して下さい");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
//ここで例えば + などを入力する
if (//ここの条件の指定方法が知りたいです//) {
System.out.println("※数値を入力して下さい");
}
ここに問題・エラーに対して試したことを記載してください。
数値の代わりに + を入れてみたのですが
Scanner周りはバッファが不意に残ったりするので,nextInt等を使う場合while(true)に入れるのは危険だったりします.
可能な限りnextLineで読み込んで(=入力を読み切って),あとからパースを試みるのが良いと思われます.
同様の理由で,無限ループの内部にtry-catchを入れると,catchした時点での中途半端な処理が次の周回に残って危険ですので,確実に脱出できないtryの書き方は控えてください.
@rempei
Questionerざっと考えました:
nextInt()
で例外をキャッチInteger.parseInt()
で例外をキャッチinstanceof
で型判定※過去の質問が解決したらば、クローズをお願いします
@rempei
Questioner@rempei
Questioner@rempei
Questioner@rempei
Questioner@rempei
Questionerご参考:
import java.util.*;
public class Main {
// 面倒くさいので数値変換できなければマイナス値を返す仕様
public static int getNumber(String str) {
try {
return Integer.parseInt(str);
} catch (Exception e) {
return -1;
}
}
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("数値を入力してください");
int num = getNumber(scan.nextLine());
if (0 <= num)
break;
System.out.println("※ 数値が入力されていません");
}
}
}
@rempei
Questioner