Не понимаю почему m принимается за булеан (String cannot be converted to boolean if (m = "man") )
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int i=0;
String m;
int[] a;
Scanner wm = new Scanner(System.in);
System.out.println("man or woman?");
m = wm.nextLine();
if (m = "man"){
i++;
a[0]=i;
} else {
System.out.println("You fit!");
}
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
сделайте так указал @kompaniietst
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int i=0;
String m;
int a;
Scanner wm = new Scanner(System.in);
System.out.println("man or woman?");
m = wm.nextLine();
if (m == "man"){
i++;
a = i;
} else {
System.out.println("You fit!");
}
}
не много подкорректировал чтоб работало
Автор решения: Roman Konoval
→ Ссылка
Как уже написали, m = "man" это выражение:
- которое присваивает переменной
mзначение выражения справа от знака присваивания - результатом которого, является значение выражения справа от знака присваивания
Строка не может быть использована в if и в java нет неявного приведения к boolean, поэтому и получаете ошибку.
Правильно сравнение делать используя метод equals. Удобней всего так Objects.equals(m, "man"). Можно так "man".equals(m). Если точно известно, что m != null, то можно m.equals("man").
Обратите внимание, что использовать == для сравнения содержимого строк - нельзя, т.к. такое сравнение в общем случае не работает, т.к. сравнивает ссылки на объекты, а не их содержимое.