Top.Mail.Ru
Ответы

Почему то не работает if на Java.

Написал какой то простой код на Java, но почему то, if при проверке считает, что условие ложно, когда оно истинно (он всегда считает, что условие ложно). Код ниже:

1234567891011121314151617181920212223242526272829303132333435363738394041
 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; 
	} 
 
} 
 

Но почему то он возвращает это:

12345678910111213141516171819
 Реши задачу: 
2 + 2 × 2 
Попытка 1: 4 
4 
Ваш ответ (4) неправильный! 
Попытка 2: 8 
8 
Ваш ответ (8) неправильный! 
Попытка 3: 6 
6 
Ваш ответ (6) неправильный! 
Попытка 4: 2 
2 
Ваш ответ (2) неправильный! 
Попытка 5: 1 
1 
Ваш ответ (1) неправильный! 
Попытка 6: 
 

Помогите, пожалуйста, понять, где ошибка.

По дате
По рейтингу
Аватар пользователя
Высший разум
1мес

Ты наступил на стандартные грабли языка Java.

Проблема в том, что в Java == сравнивает НЕ содержимое объектов, а УКАЗАТЕЛИ на объекты. И указатель, хранящийся в переменной x, не совпадает с указателем на константу "6". И это не только со String, а с любыми классами такое.

Должно быть не x == "6", а x.equals("6").

Аватар пользователя
Ученик
1мес

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("Спасибо за участие!");
}
}
лучше через сканнер сделать чем инпут, у меня тоже проблемы бывали хотя все правильно было, попробовал переделать через сканнер и зафурычило все

Аватар пользователя
Мыслитель
1мес

Значит что-то в коде не так написал