所以我被要求做这些任务: 编写一个可执行控制台应用程序 GuessingGame,让玩家尝试猜测 1 到 20 之间的数字。在每场游戏开始时,GuessingGame 都会实例化一个 Player 将用于存储给定玩家的游戏分数的对象。玩家的名字是 根据用户输入分配。然后程序生成一个 1 到 20 之间的随机数 并要求玩家猜数字。当玩家输入一个数字时,程序会告诉 玩家的数字是否过高或过低。玩家应该不断输入猜测 直到输入正确的数字。 分数计算如下:
score = (20 – the number of guesses).
每个玩家被要求玩游戏五次,因此每个玩家都会存储五个分数。 然后,应用程序应显示玩家的平均分和最佳分。
尽管我被 if 语句困住了,但我还是让游戏正常运行了。我尝试从 Player 类调用 getScore 方法,但出现操作数错误。这是我的 GuessingGame 代码:
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() );
}
}
}`
这是我的 Player 类:
//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))
从您的问题中不清楚所需的逻辑是什么。
关于java - 调用 Arraylist 方法并在 if 语句条件下调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513309/