Почему не даёт вернуть результат функции Java?

import java.util.Scanner;
public class trsin {
    public static void main (String[] args){
        Scanner input = new Scanner((System.in));
        System.out.print("Write your full name: ");
        String username = input.nextLine();
        sex(username);

    }
    public static String sex(String name) {
        if ('a' == name.charAt(name.length()-1)){
            String gender = "woman";
        }
        else{
            String gender = "man";
        }
        return gender;
    }
}

Ответы (1 шт):

Автор решения: CrazyElf

Потому что область видимости переменной gender у вас ограничена if и else (причём, это две разных переменные в if и else, хотя и с одним названием), а снаружи этой конструкции эту переменную уже не видно. Нужно вынести описание gender на уровень всего метода:

    public static String sex(String name) {
        String gender = "man";
        if ('a' == name.charAt(name.length()-1)){
            gender = "woman";
        }
        return gender;
    }

Так то тут переменная вообще не нужна, можно сразу возвращать литерал.

→ Ссылка