Почему то не работает if на Java.
Написал какой то простой код на Java, но почему то, if при проверке считает, что условие ложно, когда оно истинно (он всегда считает, что условие ложно). Код ниже:
package helloapp1;
public class programm {
public static void main(String[] args) {
System.out.println("Реши задачу:");
System.out.println("2 + 2 × 2");
int y = 1;
int z = 0;
do{
String x = input("Попытка " + y + ": ");
System.out.println(x);
if (x == "6") {
System.out.println("Ваш ответ (6) правльный!");
z = 1;
} else {
System.out.println("Ваш ответ (" + x + ") неправильный!");
y += 1;
}
}
while (z != 1);
}
public static String input(String print) {
String a = "";
int a1;
System.out.print(print);
try {
a1 = System.in.read();
while (System.in.available() > 0) {
a += (char) a1;
a1 = System.in.read();
}
}
catch (Exception e) {
System.out.println("Ошибка");
}
return a;
}
}
Но почему то он возвращает это:
Реши задачу:
2 + 2 × 2
Попытка 1: 4
4
Ваш ответ (4) неправильный!
Попытка 2: 8
8
Ваш ответ (8) неправильный!
Попытка 3: 6
6
Ваш ответ (6) неправильный!
Попытка 4: 2
2
Ваш ответ (2) неправильный!
Попытка 5: 1
1
Ваш ответ (1) неправильный!
Попытка 6:
Помогите, пожалуйста, понять, где ошибка.
Ты наступил на стандартные грабли языка Java.
Проблема в том, что в Java == сравнивает НЕ содержимое объектов, а УКАЗАТЕЛИ на объекты. И указатель, хранящийся в переменной x, не совпадает с указателем на константу "6". И это не только со String, а с любыми классами такое.
Должно быть не x == "6", а x.equals("6").
package helloapp1;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
System.out.println("Реши задачу:");
System.out.println("2 + 2 × 2");
Scanner scanner = new Scanner( System.in );
int attempt = 1;
boolean correct = false;
do {
System.out.print("Попытка " + attempt + ": ");
String answer = scanner.nextLine();
if (answer.equals("6")) {
System.out.println("Ваш ответ (6) правильный!");
correct = true;
} else {
System.out.println("Ваш ответ (" + answer + ") неправильный!");
attempt++;
}
} while (!correct);
scanner.close();
System.out.println("Спасибо за участие!");
}
}
лучше через сканнер сделать чем инпут, у меня тоже проблемы бывали хотя все правильно было, попробовал переделать через сканнер и зафурычило все
Значит что-то в коде не так написал