Инициализация нечисловой переменной в Java

Чтобы попрактиковаться в использовании if if, do while и переключении операторов, я делал небольшую текстовую приключенческую игру, в которой пользователь мог бы ввести свое имя, получить случайно сгенерированную профессию и назначить случайно сгенерированный квест. однако на полпути к второй цели, программе разработки Java, которую я постоянно использовал, говорилось, что одна из моих переменных "возможно, не инициализирована".

Это то, что у меня есть для кода до сих пор:

============

import java.util.*;
public class Adventure1
{
    public static void main(String[] args)
    {
        //initialize variables
        Scanner keyboard = new Scanner(System.in);
        Scanner keyboardYN = new Scanner(System.in);
        Scanner keyboard2YN = new Scanner(System.in);

        String name = "";

        char userInput;
        char userYN;
        char user2YN;

        int dieRoll = (int) (Math.random() * 9);
        char outputType;

        char Mage;
        char Soldier;
        char Explorer;
        char howTheFUCK;

        //exeternal documation
        System.out.println("The First Adventure by K. Konieczny ");
        System.out.println();

        //player name
        do
        {
            System.out.println();
            System.out.print("What is your name: ");
            name = keyboard.nextLine();
            //prompt
            System.out.print("So your name is " + name + "? Are you sure y/n : ");
            userYN = keyboardYN.nextLine().charAt(0);
            System.out.println();
            if(userYN == 'y')
            {
                System.out.println();
            }
            else
            {
                System.out.println("Type in your real name.");
            }

            }//end do
        while(userYN == 'n');

        //narration pt. 1
        System.out.println("You, " + name +
                           " have just been named the greatest, uh, what was it again?");
        System.out.println();

        //specialization
        System.out.print("Roll the dice to decide what your profession is? y/n : ");
        user2YN = keyboard2YN.nextLine().charAt(0);
        if(user2YN == 'y')
           {
            switch (dieRoll)
            {
                case '0':
                case '1':
                case '2': outputType = Mage;
                case '3':
                case '4':
                case '5': outputType = Soldier;
                case '6':
                case '7':
                case '8': outputType = Explorer;
                default : outputType = howTheFUCK;
            }//end switch
            System.out.println("Oh right, you are the greatest " + outputType + " in the town.");

            }
            else
            {
                System.out.println("I must be thinking of someone else then.");
            }

        //get quest


        System.out.println();
        System.out.println("End of program");
    }//end main
}//end class

============

Сообщение об ошибке, которое я получаю, гласит: "переменная Маг не могла быть инициализирована".

У меня нет большого опыта программирования, и мне было интересно, что я сделал не так и как я мог это исправить в будущих программах.

1 ответ

У тебя есть:

char Mage;
// ...
case '2': outputType = Mage;

Какова стоимость Mage в таком случае? Компилятор предупреждает вас, что переменная не была инициализирована.

Вы могли бы хотеть инициализировать Mage к некоторому значению, такому как:

char Mage = '0';

Или, скорее всего, вы хотите String представление Mage:

String outputType;
String mage = "Mage";
String soldier = "Soldier";
String explorer = "Explorer";
// ...
switch (dieRoll) {
    case '0':
    case '1':
    case '2': outputType = mage; 
              break;
    case '3':
    case '4':
    case '5': outputType = soldier; 
              break;
    case '6':
    case '7':
    case '8': outputType = explorer;
              break;
    default : outputType = "Oops";
}
Другие вопросы по тегам