Инициализация нечисловой переменной в 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";
}