[解決済み] at java.util.Scanner.throwFor(Unknown Source) error
2022-02-10 17:09:18
質問
private static int posNum() {
Scanner scan = new Scanner(System.in);
int input = 0;
boolean error;
if (scan.hasNextInt()) {
input = scan.nextInt();
error = input <= 0;
} else {
28 scan.next();
error = true;
}
while (error) {
System.out.print("Invalid input. Please reenter: ");
if (scan.hasNextInt()) {
input = scan.nextInt();
error = input <= 0;
} else {
scan.next();
error = true;
}
}
scan.close();
return input;
}
そのため、このメソッドを2回目に呼び出すと、次のようなエラーが返されます。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at q2.CylinderStats.posNum(CylinderStats.java:28)
at q2.CylinderStats.main(CylinderStats.java:62)
最初の呼び出しは
rad = posNum();
が正常に実行され、次にセカンダリ
height = posNum();
という、エラーになる前に値を入力することを許さないもの。
感謝
どのように解決するのですか?
よびだし中
next
スキャナーにあるかどうか調べてみてください。
if(scan.hasNext())
scan.next();
のjavaドキュメントによると スキャナ#next
トークンがなくなった場合は NoSuchElementException が発生します。
以下のように方法を変更することができます。
private static int posNum(Scanner scan) {
int input = 0;
boolean error = false;
if (scan.hasNext()) {
if (scan.hasNextInt()) {
input = scan.nextInt();
error = input <= 0;
} else {
scan.next();
error = true;
}
}
while (error) {
System.out.print("Invalid input. Please reenter: ");
if (scan.hasNextInt()) {
input = scan.nextInt();
error = input <= 0;
} else {
if (scan.hasNext())
scan.next();
error = true;
}
}
return input;
}
そして、以下のように呼び出します。
Scanner scan = new Scanner(System.in);
int i = posNum(scan);
System.out.println(i);
int j = posNum(scan);
System.out.println(j);
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み】 エラー:java: javacTask: ソースリリース8はターゲットリリース1.8を必要とする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?