所以我被要求完成这些任务: 写一个可执行的控制台应用程序GuessingGame玩家试图猜测的地方 在每个游戏开始时,GuessingGame实例化一个玩家 将用于存储给定玩家的游戏分数的对象。玩家的名字是 从用户输入分配。然后程序生成1到20之间的随机数 并要求玩家猜出这个数字。当玩家输入一个号码时,程序会告诉你 玩家数量是太高还是太低。玩家应该继续猜测 数字,直到输入正确的数字。 分数计算如下:
得分=(20 - 猜测次数)。
每个玩家被要求玩五次游戏,因此每个玩家存储五个分数。 然后,应用程序应显示播放器的平均分和最佳分数。
虽然我坚持使用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;
}
}
我没有把剩下的方法放在一起,因为它们不是问题。 我是否错误地设置了方法?如果是这样,我该如何解决这个问题?
答案 0 :(得分:2)
这会尝试将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))
从你的问题中不清楚所需的逻辑是什么。