首页 > 解决方案 > 如何让我的扫描仪以多种方法工作

问题描述

我正在为学校制作一个连接 4 游戏。我有一个玩家类定义每个玩家的各个方面,棋盘类,“逻辑”类和运行游戏的游戏类。我的 Player 类有两个几乎相同的方法来设置每个玩家,唯一的区别是游戏块,X 或 O。Player 方法还读取注册 ID 和 gamerTag。它在 player1 上完美运行,但我得到 java.util.NoSuchElementException。当我尝试运行任何使用 in.next...(); 的方法时,我实际上得到了这个错误。

播放器类方法

public void setPlayer1() {
    Scanner in = new Scanner(System.in);
    System.out.println("\nPlayer 1 please enter your Arena registration ID.");
    this.setID(in.nextLong());
    System.out.print("");
    System.out.println("Player 1 please enter the name you would like to use.");
    this.setTag(in.next());
    System.out.print("");
    System.out.print(gamerTag + " your game piece is \"X\".");
    this.setPiece("X");
    in.close();
}

public void setPlayer2() {
    Scanner in = new Scanner(System.in);
    System.out.println("\nPlayer 2 please enter your Arena registration ID.");
    this.setID(in.nextLong());
    System.out.print("");
    System.out.println("Player 2 please enter the name you would like to use.");
    this.setTag(in.next());
    System.out.print("");
    System.out.print(gamerTag + " your game piece is \"O\".");
    this.setPiece("O");
    in.close();}

public static void main(String[] args) {
    Connect4TextConsole game = new Connect4TextConsole();
    System.out.print(board);
    player1.setPlayer1();
    player2.setPlayer2();
    winner = Connect4.checkForWin(board);
    while (!winner){
        turn = turn.playerTurn(player1, player2);// switch players
        int column = Connect4.askForColumn(turn);

    }
}

标签: javajava.util.scanner

解决方案


您只需要将它作为参数提供给方法

public void setPlayer1(Scanner in) {

    System.out.println("\nPlayer 1 please enter your Arena registration ID.");
    this.setID(in.nextLong());
    System.out.print("");
    System.out.println("Player 1 please enter the name you would like to use.");
    this.setTag(in.next());
    System.out.print("");
    System.out.print(gamerTag + " your game piece is \"X\".");
    this.setPiece("X");

}

public void setPlayer2(Scanner in) {

    System.out.println("\nPlayer 2 please enter your Arena registration ID.");
    this.setID(in.nextLong());
    System.out.print("");
    System.out.println("Player 2 please enter the name you would like to use.");
    this.setTag(in.next());
    System.out.print("");
    System.out.print(gamerTag + " your game piece is \"O\".");
    this.setPiece("O");
    }

`public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    Connect4TextConsole game = new Connect4TextConsole();
    System.out.print(board);
//Here u give the scanner ur methods
    player1.setPlayer1(in);
    player2.setPlayer2(in);
    in.close();
    winner = Connect4.checkForWin(board);
    while (!winner){
        turn = turn.playerTurn(player1, player2);// switch players
        int column = Connect4.askForColumn(turn);

    }
}` 

推荐阅读