Я создаю текстовую игру, у меня есть класс для главного героя, чтобы вы могли задать имя персонажа и т. Д. Я пытаюсь выяснить, есть ли способ передать мутатор (символ.имя (вход) в качестве аргумента другого метода.Когда я пытаюсь это сделать, мне говорят, что я не могу использовать тип void в качестве аргумента метода.Когда я писал код для пользователя, чтобы ввести его имя, и все остальное, оно было повторяющимся с проверкой ошибок, поэтому я хотел создать свой собственный метод, который я мог бы вызвать, который бы проверял ошибки для меня.Пара предложений использует метод setname для сброса имени, если оно было введено неправильно, но я не могу напрямую использовать setname в методе проверки ошибок, потому что он будет использовать тот же метод для проверки других вводов данных.
Есть ли способ обойти это?
Вот запрашиваемый код: я действительно, может быть, слишком усложняю проблему, я довольно плохо знаком с Java, поэтому я все еще учусь.
Следующий код - это код, который я использую дляпроверить, правильно ли пользователь ввел что-то, он принимает массив, который содержит все возможные правильные ответы, которые может набрать пользователь. Я попытался спроектировать его таким образом, чтобы можно было что-то проверять на ошибки, а не просто «да» илиоператоры no, getVariable - это метод доступа, а setVariable - тот, который я пытаюсь заставить работать, я также пытаюсь передать мутатор, чтобы сбросить ошибку
public void confirmEntry(String question, String[] options, String getVariable, setVariable) throws InterruptedException
{
boolean correctEntry = false;
System.out.print("Is this correct? ");
for(int i = 0; i < options.length - 1; i++)
{
System.out.print(options[i] + ", ");
}
System.out.print("or ");
System.out.print(options[options.length - 1] + ": ");
input = in.nextLine();
for(int i = 0; i < options.length; i++)
{
if(input.equals(options[i]))
{
correctEntry = true;
System.out.println(correctEntry);
}
}
System.out.println(correctEntry);
while(correctEntry == false)
{
Thread.sleep(2000);
System.out.print("You must enter ");
for(int i = 0; i < options.length - 1; i++)
{
System.out.print("\"" + options[i] + "\", ");
}
System.out.print("or ");
System.out.print("\"" + options[options.length - 1] + "\" to continue: ");
Thread.sleep(2000);
System.out.println();
System.out.println("You chose " + getVariable);
Thread.sleep(2000);
System.out.print("Is this correct? ");
for(int i = 0; i < options.length - 1; i++)
{
System.out.print(options[i] + ", ");
}
System.out.print(" or ");
System.out.print(options[options.length - 1] + ": ");
input = in.nextLine();
for(int i = 0; i < options.length; i++)
{
if(input.equals(options[i]))
{
correctEntry = true;
}
}
}
}
Следующий код - это то, что в данный момент используется в методе, где вы вводите информацию о персонаже.Я пытаюсь перенести больше кода в метод проверки ошибок, чтобы каждый раз, когда я задавал пользователю вопрос, имя, возраст и т. Д., Мне просто нужно было вызвать метод.
public void characterCreation() throws Exception
{
//create an instance of the class player (your character creation)
Player character = new Player();
//Initial Introduction to the game
System.out.println("Welcome to Stranded!");
Thread.sleep(2000);
System.out.println("Tell us a little about yourself!");
Thread.sleep(2000);
//______________________________________________________________________________________________________________
//SET YOUR CHARACTER'S NAME
String[] yesNo = {"yes", "no"}; //array to feed into confirmEntry method
System.out.print("Enter your character's name: ");
input = in.nextLine(); //asks for input of the name
character.setName(input); //sets name in the player class
System.out.println("You chose " + character.getName()
+ " for your character's name");
Thread.sleep(2000);
confirmEntry("Enter your character's name: ", yesNo, character.getName(), character.setName(input));
while(input.equals("no"))
{
Thread.sleep(2000);
System.out.print("Enter your character's name: "); //prompt to enter name again
input = in.nextLine();
character.setName(input); //sets name in player class
Thread.sleep(2000);
System.out.println("You chose " + character.getName()
+ " for your character's name"); //confirms what user entered for name
Thread.sleep(2000);
confirmEntry("Enter your character's name: ", yesNo, character.getName(), character.setName(input));
}
Я пытаюсь переместить больше кода после комментария SET CHARACTER NAME в метод verifyEntry, однако остальная часть кода, связанного с именем персонажа, использует мутатор для установки имени.Это проблема.Я хотел попытаться получить как можно больше кода в verifyEntry, поэтому всякий раз, когда я прошу пользователя ввести что-то об их персонаже, мне просто нужно вызвать метод.