具有不同用户输入的多个对象 java
Multiple objects with different user inputs java
所以我试图在我的主驱动程序 class 中创建的不同对象中获取多个用户输入,我似乎无法弄清楚如何做到这一点。网络上的其他教程只展示了如何针对一个对象执行此操作,但我有多个。
public class roulettedriver {
public static void main(String[] args) {
Scanner keyin = new Scanner(System.in);
// initializing the six players of the game
Player player1 = new Player(0, 0, 0, 0, 0);
Player player2 = new Player(0, 0, 0, 0, 0);
Player player3 = new Player(0, 0, 0, 0, 0);
Player player4 = new Player(0, 0, 0, 0, 0);
Player player5 = new Player(0, 0, 0, 0, 0);
Player player6 = new Player(0, 0, 0, 0, 0);
在我的另一个 class 播放器中
public class Player {
int number1;
int number2;
int number3;
int number4;
int number5;
// constructor for each player at the table
public Player(int number1, int number2, int number3, int number4, int number5) {
this.number1 = number1;
this.number2 = number2;
this.number3 = number3;
this.number4 = number4;
this.number5 = number5;
所以我试图通过 keyin.nextInt()
让用户输入每个玩家的数字 1、数字 2、数字 3、数字 4、数字 5,但我不知道该怎么做!
您将看到在这种情况下使用的标准 'patterns' 之一是 'factory'。这本质上是专家 class,唯一的工作就是制作另一个 class 的对象。在您的情况下,'factory' 将是 PlayerFactory
,它有一个方法可以采用 Scanner
并从中创建一个 Player
。它可以有多种创建可用玩家的方法。下面是一些帮助您入门的示例代码:
class PlayerFactory {
public Player makeFromScanner(Scanner scannerIn) {
int number1 = scannerIn.nextInt();
int number2 = scannerIn.nextInt();
...
return new Player(number1, number2, ...);
}
public Player makeRandom() {
Random rand = new Random();
int number1 = rand.nextInt();
...
return new Player(number1, number2, ...);
}
}
然后您可以按如下方式使用它:
PlayerFactory factory = new PlayerFactory();
Player player1 = factory.makeFromScanner(scannerIn);
Player player2 = factory.makeRandom();
其他选项是使它成为 Player
构造函数之一:
class Player {
public Player(Scanner scannerIn) {
number1 = scannerIn.nextInt();
number2 = scannerIn.nextInt();
...
}
}
用作:
Player player1 = new Player(scannerIn);
或者您可以将构建方法设为 Player
:
的静态方法
class Player {
public static Player makeFromScanner(Scanner scannerIn) {
...
}
public static Player makeRandom() {
...
}
}
然后用作:
Player player1 = Player.makeFromScanner(scannerIn);
你可以试试这个:
public static void main(String[] s) throws NoSuchFieldException, SecurityException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
String numbers = null;
while(true){
System.out.println("Enter a five numbers (only numbers) or type kill, plis:");
numbers = br.readLine();//read a console value typed for user
if(numbers!=null && numbers.equals("kill")){//verify to continue running or exit
System.out.println("Exit");
break;
}
int[] numbersToParam = new int[5]; //array for the five parameters to your Player object
for(int i=0; i<numbers.length(); i++){
numbersToParam[i] = Integer.parseInt(numbers.substring(i, i+1));//parse 5 values to array
}
//create a new playes with parameters
new Player(numbersToParam[0],numbersToParam[1],numbersToParam[2],numbersToParam[3],numbersToParam[4]);
}
}
catch (IOException io)
{
System.err.println(io.toString());
}
}
所以我试图在我的主驱动程序 class 中创建的不同对象中获取多个用户输入,我似乎无法弄清楚如何做到这一点。网络上的其他教程只展示了如何针对一个对象执行此操作,但我有多个。
public class roulettedriver {
public static void main(String[] args) {
Scanner keyin = new Scanner(System.in);
// initializing the six players of the game
Player player1 = new Player(0, 0, 0, 0, 0);
Player player2 = new Player(0, 0, 0, 0, 0);
Player player3 = new Player(0, 0, 0, 0, 0);
Player player4 = new Player(0, 0, 0, 0, 0);
Player player5 = new Player(0, 0, 0, 0, 0);
Player player6 = new Player(0, 0, 0, 0, 0);
在我的另一个 class 播放器中
public class Player {
int number1;
int number2;
int number3;
int number4;
int number5;
// constructor for each player at the table
public Player(int number1, int number2, int number3, int number4, int number5) {
this.number1 = number1;
this.number2 = number2;
this.number3 = number3;
this.number4 = number4;
this.number5 = number5;
所以我试图通过 keyin.nextInt()
让用户输入每个玩家的数字 1、数字 2、数字 3、数字 4、数字 5,但我不知道该怎么做!
您将看到在这种情况下使用的标准 'patterns' 之一是 'factory'。这本质上是专家 class,唯一的工作就是制作另一个 class 的对象。在您的情况下,'factory' 将是 PlayerFactory
,它有一个方法可以采用 Scanner
并从中创建一个 Player
。它可以有多种创建可用玩家的方法。下面是一些帮助您入门的示例代码:
class PlayerFactory {
public Player makeFromScanner(Scanner scannerIn) {
int number1 = scannerIn.nextInt();
int number2 = scannerIn.nextInt();
...
return new Player(number1, number2, ...);
}
public Player makeRandom() {
Random rand = new Random();
int number1 = rand.nextInt();
...
return new Player(number1, number2, ...);
}
}
然后您可以按如下方式使用它:
PlayerFactory factory = new PlayerFactory();
Player player1 = factory.makeFromScanner(scannerIn);
Player player2 = factory.makeRandom();
其他选项是使它成为 Player
构造函数之一:
class Player {
public Player(Scanner scannerIn) {
number1 = scannerIn.nextInt();
number2 = scannerIn.nextInt();
...
}
}
用作:
Player player1 = new Player(scannerIn);
或者您可以将构建方法设为 Player
:
class Player {
public static Player makeFromScanner(Scanner scannerIn) {
...
}
public static Player makeRandom() {
...
}
}
然后用作:
Player player1 = Player.makeFromScanner(scannerIn);
你可以试试这个:
public static void main(String[] s) throws NoSuchFieldException, SecurityException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
String numbers = null;
while(true){
System.out.println("Enter a five numbers (only numbers) or type kill, plis:");
numbers = br.readLine();//read a console value typed for user
if(numbers!=null && numbers.equals("kill")){//verify to continue running or exit
System.out.println("Exit");
break;
}
int[] numbersToParam = new int[5]; //array for the five parameters to your Player object
for(int i=0; i<numbers.length(); i++){
numbersToParam[i] = Integer.parseInt(numbers.substring(i, i+1));//parse 5 values to array
}
//create a new playes with parameters
new Player(numbersToParam[0],numbersToParam[1],numbersToParam[2],numbersToParam[3],numbersToParam[4]);
}
}
catch (IOException io)
{
System.err.println(io.toString());
}
}