簡體   English   中英

使用多個掃描儀失敗-Java

[英]Using multiple scanners failed - Java

我的Scanner類有問題。 我有一些方法可以讀取用戶的某些輸入,但是調用第一種方法后,其他方法會崩潰(無法讀取輸入)。 我搜索了解決方案,看起來添加“ scanner.nextLine()”可以解決問題,但沒有解決。

public class GameController {

private int numberOfPlayers = 2;

private Board board = new Board('.');
String players[] = new String[numberOfPlayers];
char playersMarkers[] = new char[numberOfPlayers];

public void getPlayersNames() {
    Scanner input = new Scanner(System.in);

    for (int i = 0; i < players.length; i++) {
        System.out.print("Insert player " + (i + 1) + "'s name: ");
        players[i] = input.nextLine();
    }
    input.nextLine(); // <- this one was suppose to solve the problem
    input.close();
}


public static void main(String[] args) {

    GameController gc = new GameController();
    gc.getPlayersNames();

    Scanner scanner = new Scanner(System.in);

    int array[] = new int[5];
    for (int i = 0; i < array.length; i++) {
        if (scanner.hasNext()) {
        array[i] = scanner.nextInt();
        }
    }

    scanner.close();

    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }

輸出:

Insert player 1's name: John
Insert player 2's name: George
1
0
0
0
0
0

您沒有從scanner獲取任何內容(在main方法中),因為您已經關閉了System.in (在getPlayersNames方法末尾關閉input時)。

您不應該自己關閉System.in ,因為它會阻止將來嘗試從此流中讀取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM