Не понимаю почему 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" это выражение:

  1. которое присваивает переменной m значение выражения справа от знака присваивания
  2. результатом которого, является значение выражения справа от знака присваивания

Строка не может быть использована в if и в java нет неявного приведения к boolean, поэтому и получаете ошибку.

Правильно сравнение делать используя метод equals. Удобней всего так Objects.equals(m, "man"). Можно так "man".equals(m). Если точно известно, что m != null, то можно m.equals("man").

Обратите внимание, что использовать == для сравнения содержимого строк - нельзя, т.к. такое сравнение в общем случае не работает, т.к. сравнивает ссылки на объекты, а не их содержимое.

→ Ссылка