Поэтому мне было предложено выполнить эту задачу: Напишите исполняемое консольное приложение GuessingGame, где игрок пытается угадать число от 1 до 20. В начале каждой игры GuessingGame создает экземпляр объекта Player, который будет использоваться для хранения игровых баллов для данного игрока. Имя игрока назначается из пользовательского ввода. Затем программа генерирует случайное число от 1 до 20 и просит игрока угадать номер. Когда игрок вводит номер, программа сообщает игроку, слишком ли он слишком высокий или слишком низкий. Игрок должен продолжать вводить цифры до тех пор, пока не будет введен правильный номер. Оценка рассчитывается следующим образом:
score = (20 - количество догадок).
Каждому игроку предлагается сыграть в игру пять раз, поэтому для каждого игрока хранятся пять баллов. Затем приложение должно отображать средний и лучший результат для игрока.
Я получил игру, хотя я застрял в заявлении if. Я попытался вызвать метод getScore из класса Player, но получаю ошибки операнда. вот мой код 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() );
}
}
}'
И вот мой класс игрока:
//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))
Из вашего вопроса неясно, что такое логика.