调用 Arraylist 方法并在 if 语句条件下调用它
Calling an Arraylist method and calling it on if statement condition
所以我被要求做这些任务:
编写一个可执行的控制台应用程序 GuessingGame,玩家在其中尝试猜测一个
1 到 20 之间的数字。在每个游戏开始时,GuessingGame 实例化一个 Player
将用于存储给定玩家的游戏分数的对象。玩家的名字是
从用户输入分配。然后程序生成一个 1 到 20 之间的随机数
并要求玩家猜数字。当玩家输入一个数字时,程序会告诉
玩家数字是否太高或太低。玩家应该继续输入猜测
数字,直到输入正确的数字。
分数计算如下:
score = (20 – the number of guesses).
要求每个玩家玩五次游戏,因此为每个玩家存储五个分数。
然后,应用程序应显示玩家的平均分和最佳分。
尽管我卡在 if 语句上,但我的游戏运行正常了。我尝试从 Player class 调用 getScore 方法,但出现操作数错误。这是我的猜谜游戏代码:
public class GuessingGame
{
public static void main (String [] args)
throws IOException
{
String name;
final int numberOfGuess = 5;
//Create Scanner object
Scanner input = new Scanner (System.in);
Player[] player1 = new Player[numberOfGuess];
//Ask user for name
System.out.printf("\n Enter Player Name:");
name = input.nextLine();
PrintStream fout = new PrintStream(new File("PlayerData.txt"));
for (int index = 0; index < player1.length ; index++)
{
int playerId = index + 1;
player1[index] = new Player(name); // reference to Student object
player1[index].setName(name);
//Ask user for number input
System.out.println("Please pic a number between 1 - 20");
player1[index].setScore(Integer.parseInt(input.nextLine()));
Random rand = new Random();
int answer = rand.nextInt(20) + 1;
System.out.println(answer);
System.out.println(player1[index].getScores());
if(answer >= player1[index].getScores())
{
System.out.println("Your guess is too low");
}
}
fout.println( "" + player1[1].getName() );
for (int index = 0; index < player1.length ; index++)
{
int playerId = index + 1;
fout.println( "" + player1[index].getScores() );
}
}
}`
这是我的播放器 class:
//Class declaration of Player class
public class Player
{
/*--------------- Data Fields ---------------------------------------
Attributes of the class
*/
private String name;
private int playerId;
private int bestScore;
private static int numberOfPlayers = 0;
private ArrayList<Integer> scores = new ArrayList<Integer>();
/* -------------- CONSTRUCTOR --------------------------------------
*/
public Player(String name)
{
this.name = name;
numberOfPlayers++;
playerId = numberOfPlayers;
}
//Create set method for setName
public void setName(String name)
{
this.name = name;
}
//Create set method for setScores
public void setScore(int score)
{
scores.add(score);
}
//Create get method for getScores
public ArrayList<Integer> getScores()
{
return scores;
}
}
我没有把其余的方法放在一起,因为它们不是问题所在。
我是否错误地设置了方法?如果是这样,我该如何解决这个问题?
这会尝试将 int
与 ArrayList<Integer>
进行比较:
if (answer >= player1[index].getScores())
也许您想将 int
与 ArrayList
的大小进行比较:
if (answer >= player1[index].getScores().size())
或将 int
与 ArrayList
的某个元素进行比较:
if (answer >= player1[index].getScores().get(someIndex))
从你的问题中不清楚所需的逻辑是什么。
所以我被要求做这些任务: 编写一个可执行的控制台应用程序 GuessingGame,玩家在其中尝试猜测一个 1 到 20 之间的数字。在每个游戏开始时,GuessingGame 实例化一个 Player 将用于存储给定玩家的游戏分数的对象。玩家的名字是 从用户输入分配。然后程序生成一个 1 到 20 之间的随机数 并要求玩家猜数字。当玩家输入一个数字时,程序会告诉 玩家数字是否太高或太低。玩家应该继续输入猜测 数字,直到输入正确的数字。 分数计算如下:
score = (20 – the number of guesses).
要求每个玩家玩五次游戏,因此为每个玩家存储五个分数。 然后,应用程序应显示玩家的平均分和最佳分。
尽管我卡在 if 语句上,但我的游戏运行正常了。我尝试从 Player class 调用 getScore 方法,但出现操作数错误。这是我的猜谜游戏代码:
public class GuessingGame
{
public static void main (String [] args)
throws IOException
{
String name;
final int numberOfGuess = 5;
//Create Scanner object
Scanner input = new Scanner (System.in);
Player[] player1 = new Player[numberOfGuess];
//Ask user for name
System.out.printf("\n Enter Player Name:");
name = input.nextLine();
PrintStream fout = new PrintStream(new File("PlayerData.txt"));
for (int index = 0; index < player1.length ; index++)
{
int playerId = index + 1;
player1[index] = new Player(name); // reference to Student object
player1[index].setName(name);
//Ask user for number input
System.out.println("Please pic a number between 1 - 20");
player1[index].setScore(Integer.parseInt(input.nextLine()));
Random rand = new Random();
int answer = rand.nextInt(20) + 1;
System.out.println(answer);
System.out.println(player1[index].getScores());
if(answer >= player1[index].getScores())
{
System.out.println("Your guess is too low");
}
}
fout.println( "" + player1[1].getName() );
for (int index = 0; index < player1.length ; index++)
{
int playerId = index + 1;
fout.println( "" + player1[index].getScores() );
}
}
}`
这是我的播放器 class:
//Class declaration of Player class
public class Player
{
/*--------------- Data Fields ---------------------------------------
Attributes of the class
*/
private String name;
private int playerId;
private int bestScore;
private static int numberOfPlayers = 0;
private ArrayList<Integer> scores = new ArrayList<Integer>();
/* -------------- CONSTRUCTOR --------------------------------------
*/
public Player(String name)
{
this.name = name;
numberOfPlayers++;
playerId = numberOfPlayers;
}
//Create set method for setName
public void setName(String name)
{
this.name = name;
}
//Create set method for setScores
public void setScore(int score)
{
scores.add(score);
}
//Create get method for getScores
public ArrayList<Integer> getScores()
{
return scores;
}
}
我没有把其余的方法放在一起,因为它们不是问题所在。 我是否错误地设置了方法?如果是这样,我该如何解决这个问题?
这会尝试将 int
与 ArrayList<Integer>
进行比较:
if (answer >= player1[index].getScores())
也许您想将 int
与 ArrayList
的大小进行比较:
if (answer >= player1[index].getScores().size())
或将 int
与 ArrayList
的某个元素进行比较:
if (answer >= player1[index].getScores().get(someIndex))
从你的问题中不清楚所需的逻辑是什么。