在Java中初始化非数字变量[duplicate]

问题描述 投票:0回答:1

这个问题在这里已有答案:

为了练习使用if else,do while和switch语句,我正在创建一个小文本冒险游戏,用户可以输入他们的名字,获得随机生成的职业,并被分配一个随机生成的任务。然而,在第二个目标的中途,我正在使用的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 howTo;

        //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 = howTo;
            }//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

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

我得到的错误消息是“变量Mage可能尚未初始化”。

我没有太多的编码经验,并且想知道我做错了什么以及如何在未来的程序中修复它。

java variables text adventure
1个回答
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";
}
© www.soinside.com 2019 - 2024. All rights reserved.