ジャッキー:
一つだけ作成する方法Scanner
自動テストは、あなたのプログラムが例外を生成して終了しますので、私のプログラム全体のオブジェクトを。その理由は、自動テストにおいて、テスト入力の複数の行がプログラムに一斉送信されることです。これは、原因となるerror.Exception
「メイン」のスレッドをjava.util.NoSuchElementException
import java.util.Scanner;
public class NimPlayer
{
public NimPlayer()
{
Scanner Keyboard=new Scanner(System.in);
System.out.println("Please enter Player 1's name:" );
String NameofPlayer1=Keyboard.nextLine();
System.out.println();
System.out.println("Please enter Player 2's name:" );
String NameofPlayer2=Keyboard.nextLine();
System.out.println();
do {
System.out.println("Please enter upper bound of stone removal:");
int Upperbound=Keyboard.nextInt();
System.out.println();
System.out.println("Please enter initial number of stones:");
int InitialNum=Keyboard.nextInt();
removeStone(NameofPlayer1,NameofPlayer2,InitialNum,Upperbound);
System.out.println();
System.out.println("Do you want to play again(Y/N):");
}while(Keyboard.next().equalsIgnoreCase("Y"));
}
public static void removeStone(String NameofPlayer1,String NameofPlayer2,int InitialNum,int Upperbound)
{
Scanner Keyboard1=new Scanner(System.in);
int Roundplayer=1;
while(InitialNum>0)
{
System.out.println();
System.out.print(InitialNum+" "+ "stones left:");
Star(InitialNum);
System.out.println();
if(Roundplayer>0)
{
System.out.println(NameofPlayer1+ "'s turn-remove how many?");
int NumofPlayer1=Keyboard.nextInt();
while(NumofPlayer1>Upperbound)
{
System.out.println("Larger than upper bound!" +"\nPlease enter it again\n");
break;
}
Roundplayer=Roundplayer-1;
InitialNum=InitialNum-NumofPlayer1;
}
else
{
System.out.println(NameofPlayer2+ "'s turn-remove how many?");
int NumofPlayer2=Keyboard1.nextInt();
Roundplayer=Roundplayer+1;
InitialNum=InitialNum-NumofPlayer2;
//System.out.print(InitialNum+ "stones left:");
//Star(InitialNum);
}
}
if(Roundplayer>0)
{
System.out.println();
System.out.println("Game Over");
System.out.println(NameofPlayer1+ " "+"wins");
}
else {
System.out.println();
System.out.println("Game Over");
System.out.println(NameofPlayer2+ " "+"wins!");
}
}
public static void Star(int InitialNum )
{
for(int i=0; i<InitialNum; i++ )
{
System.out.printf(" "+"*");
}
}
}
アービンド・クマールのAvinash:
作成と削除Scanner
コンストラクタやその他の方法から。インスタンス変数としてクラス内でそれを入れて、コンストラクタおよび他の方法の内側にそれを使用しています。
public class NimPlayer {
Scanner keyboard = new Scanner(System.in);
public NimPlayer() {
// You can use keyboard here
}
public static void removeStone(String NameofPlayer1,String NameofPlayer2,int InitialNum,int Upperbound) {
// You can use keyboard here
}
//...Other parts of the program
}
私はあなたが従うもお勧めのJavaの命名規則、あなたの変数名を例えばKeyboard
なければなりませんkeyboard
。