Ошибка со значениями в операторе if
import java.util.*;
public class GuessNumber {
void startGame() {
Scanner scan = new Scanner(System.in);
Player player = new Player();
Random r = new Random();
player.setPlayers();
int firstGuess = 0;
int secondGuess = 0;
int maxNumber = 100;
int hiddenNum = r.nextInt(maxNumber + 1);
do {
System.out.println("Введите число, а потом ждите ответа от программы!");
firstGuess = scan.nextInt();
secondGuess = scan.nextInt();
if(firstGuess < hiddenNum) {
System.out.println("Число " + player.getFirstNickname() + " меньше правильного");
} else if (firstGuess > hiddenNum) {
System.out.println("Число " + player.getFirstNickname() + " больше правильного");
} else if (firstGuess == hiddenNum) {
System.out.println("Игрок " + player.getFirstNickname() + " победил!");
break;
}
if (secondGuess > hiddenNum) {
System.out.println("Число " + player.getSecondNickname() + " больше правильного");
} else if (secondGuess < hiddenNum) {
System.out.println("Число " + player.getSecondNickname() + " меньше правильного");
} else if (secondGuess == hiddenNum) {
System.out.println("Игрок " + player.getSecondNickname() + " победил!");
break;
}
} while(firstGuess != hiddenNum || secondGuess != hiddenNum);
}
}
import java.util.*;
public class Player {
private String firstNickname;
private String secondNickname;
void setPlayers() {
Scanner scan = new Scanner(System.in);
System.out.println("Введите ники 2 игроков");
firstNickname = scan.nextLine();
secondNickname = scan.nextLine();
}
public String getFirstNickname() {
return firstNickname;
}
public String getSecondNickname() {
return secondNickname;
}
}
import java.util.*;
public class GuessNumberTest {
public static void main(String[] args) {
GuessNumber guessNumber = new GuessNumber();
Random random = new Random();
Scanner scan = new Scanner(System.in);
Player player = new Player();
String answer;
int loopSetup = 3;
for(int i = 2; i < loopSetup; i++) {
guessNumber.startGame();
System.out.println("Хотите продолжить?[yes/no]:");
answer = scan.nextLine();
if("yes".equals(answer)) {
loopSetup+=3;
} else if ("no".equals(answer)) {
i = loopSetup + i * loopSetup;
} else if (answer != "yes" && answer != "no") {
System.out.println("Хотите продолжить?[yes/no]:");
answer = scan.nextLine();
loopSetup--;
}
}
}
}
Дана программа. Все фрагменты указаны в вопросе для подробного понимания работы всех частей кода. Цель программы - проводить игру "Угадай число" для 2 игроков, в которой после окончания выводить сообщение "Хотите продолжить?".Человек должен ввести одно из 3 значений, что указано в операторе if(В классе GuessNumberTest, в цикле for).Тут как раз возникла проблема. Если поменять значение в условии оператора на кириллицу(то есть на "да" и "нет"), то при вводе этих значений(если такие есть в условии), то программа считать, что значение "да" или "нет" не совпадают с условиями выше. Если же заменить "да" на "yes" и "нет" на "no", то всё будет работать корректно. Цель вопроса - узнать проблему неправильной работы, узнать рабочую альтернативу на кириллице. Прошу протестить код до принятия решений.