gpt4 book ai didi

java - 使用两个扫描仪进行不同输入时出现问题

转载 作者:行者123 更新时间:2023-12-02 12:14:18 25 4
gpt4 key购买 nike

当使用Scanner时要从标准输入读取,除了要读取的内容之外输入的换行符不会被消耗,从而导致后续输入出现问题。这可以使用类似 exampleScanner.nextLine() 来修复。 。但是,我尝试使用如下两种不同的扫描仪,但无法解决问题。我知道有大量与此类问题相关的问题和答案 Scanner但我似乎仍然无法找到我的特定问题的答案。我的问题可以解决吗还是我必须解决一个Scanner ?这是一些代码:

import java.util.Scanner;
import java.util.NoSuchElementException;

public class ScannerTest {
public static void main(String[] args) {

char sym = ' ';
int x = 0;

/* scan for char (string) */
Scanner scanForSym = new Scanner(System.in);
System.out.print("Enter a symbol: ");
try {
sym = scanForSym.next().charAt(0);
} catch (NoSuchElementException e) {
System.err.println("Failed to read sym: "+e.getMessage());
}
scanForSym.nextLine(); // makes no diff when using different Scanner
scanForSym.close();

/* scan for int with different scanner */
Scanner scanForX = new Scanner(System.in);
System.out.print("\nEnter an integer: ");
try {
x = scanForX.nextInt();
//x = scanForSym.next(); // this works fine (comment out the close above)
} catch (NoSuchElementException e) {
System.err.println("Failed to read x: "+e.getMessage());
}
scanForX.close();

System.out.println("sym: "+sym);
System.out.println("x: "+x);
}
}

最佳答案

错误与此行相关:

scanForSym.close();

关闭System.in InputStream。那么这个调用

x = scanForX.nextInt();

由于 scanForX 尝试从已关闭的 InputStream 中读取数据,因此抛出 IOException。

尝试移动

scanForSym.close();

下面某处

x = scanForX.nextInt();

尽管(从评论中重申)尚不清楚为什么要使用多个 Scanner 实例(当它们都与 System.in 关联时)。

关于java - 使用两个扫描仪进行不同输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com