Привет Я новичок с Java, и я пытаюсь написать небольшую простую текстовую версию для одной домашней работы, это вот код:Java String Index Out of Bound (String Index out of Range) в строке 150
import java.util.* ;
class Quiz
{
public static void main(String[] not_in_use)
{
Scanner keyboard = new Scanner(System.in) ;
int money = 0;
char answer;
boolean quit = false;
int id = 0;
int id1 = 0;
System.out.print("\nWelcome to Haluatko Miljonääriksi?."
+ "\nAn interactive quiz game about Finland by Khoa \"Kazkyu\" Nguyen.\n"
+ "\nYou are given 15 multiple-choice questions."
+ "\nEarn money and move on by choosing the right answer, final price is 1 million Euros."
+ "\nAnswer a question by typing A, B, C, D on your keyboard."
+ "\nType in \"save\" to use Lifesaver."
+ "\nQuit the game and keep your earned money by typing \"exit\"."
+ "\nYou still win with half the money you earned if you answer wrong."
+ "\n\nPress Enter to begin: ");
keyboard.nextLine();
if ((id <= 15) && (quit == false))
{
System.out.print("\nWhat is the name of Finland in Finnish?:\n"
+"\nA. Suomi"
+"\nB. Soumi"
+"\nC. Suomea"
+"\nD. Soumea"
+"\n\n");
answer = keyboard.nextLine().charAt(0);
while (!((answer == 'A') ||
(answer == 'a') || (answer == 'B') ||
(answer == 'b') || (answer == 'C') ||
(answer == 'c') || (answer == 'D') ||
(answer == 'd') || (answer == 'E') ||
(answer == 'e') || (answer == 'S') || (answer == 's')))
{
System.out.print("\nWrong input A,B,C,D or Exit or Save only.\n");
answer = keyboard.nextLine().charAt(0) ;
}
if ((answer == 'A') || (answer == 'a'))
{
money = money + 200;
id = id + 1;
System.out.print ("\nCorrected, you earned " + money + " Euros\n");
}
else if ((answer == 'B') || (answer == 'b') || (answer == 'C') || (answer == 'c')
|| (answer == 'D') || (answer == 'd'))
{
System.out.print ("\nWrong, you lose, no money for you\n"
+"Game over, good luck next time\n");
quit = true;
}
else if ((answer == 'E') || (answer == 'e'))
{
System.out.print ("\nYou choose to quit, your money is: " + money + " Euros"
+"\nGood luck next time\n");
quit = true;
}
else if ((answer == 'S') || (answer == 's'))
{
id1 = id1 + 1;
System.out.print ("\nPlease choose your life saver:"
+"\nType 1 for \"Skip and get point\""
+"\nType 2 for \"Surf Wikipedia for answer\", Warning: Very Random"
+"\nType 3 for \"Asked Jere, Michal, Jaska, Marios for help\", Warning: Very Random"
+"\n\n");
int choice = keyboard.nextInt();
if (choice == 1)
{
money = money + 200;
id = id + 1;
answer
System.out.print ("\nQuestion Skipped, earn " + money + " Euros.\n");
}
if (choice == 2)
{
Random rand = new Random();
int randomNum = rand.nextInt((4 - 1) + 1) + 1;
if (randomNum == 1)
{
money = money + 200;
System.out.print ("\nWiki said answer is A, right answer, ");
}
else if (randomNum == 2)
{
System.out.print ("\nWiki said answer is B ,wrong answer, Game over.\n"
+"You earned " + money + " Euros.\n");
quit = true;
}
else if (randomNum == 3)
{
System.out.print ("\nWiki said answer is C ,wrong answer, Game over.\n"
+"You earned " + money + " Euros.\n");
quit = true;
}
else if (randomNum == 4)
{
System.out.print ("\nWiki said answer is D ,wrong answer, Game over.\n"
+"You earned " + money + " Euros.\n");
quit = true;
}
}
if (choice == 3)
{
Random rand1 = new Random();
int randomNum1 = rand1.nextInt((4 - 1) + 1) + 1;
if (randomNum1 == 1)
{
money = money + 200;
System.out.print ("\nYou asked Jere and got the answer: A.\n"
+"Right answer, " + money + " Euros.\n");
}
if (randomNum1 == 2)
{
money = money + 200;
System.out.print ("\nYou asked Michal and got the answer: A.\n"
+"Right answer, " + money + " Euros.\n");
}
if (randomNum1 == 3)
{
System.out.print ("\nYou called Jaska and recieved a \"Whatever, I like milk, why not\" for an answer."
+ "\nYou answered \"Whatever, I like milk, why not\", Wrong answer."
+ "\nGame over, You earn " + money + " Euro.\n");
quit = true;
}
if (randomNum1 == 4)
{
System.out.print ("You called Marios and he gave you this answer:\n"
+ "\nAyy Lmao, get rekt m8, inb4 4chan raid."
+ "\nYou don't know what the fuck it mean."
+ "\nSo you quit with " + money + " Euros in your pocket.\n");
quit = true;
}
}
}
}
if ((id <= 15) && (quit == false))
{
System.out.print("\nWhen is the Finnish's Independence Day?:\n"
+"\nA. 12th of December"
+"\nB. 25th of December"
+"\nC. 6th of December"
+"\nD. 31th of December"
+"\n\n");
****\\line 150 THIS IS LINE 150 WHERE IT HAPPEN\\
answer = keyboard.nextLine().charAt(0);****
while (!((answer == 'A') ||
(answer == 'a') || (answer == 'B') ||
(answer == 'b') || (answer == 'C') ||
(answer == 'c') || (answer == 'D') ||
(answer == 'd') || (answer == 'E') ||
(answer == 'e') || (answer == 'S') || (answer == 's')))
{
System.out.print("\nWrong input A,B,C,D or Exit or Save only.\n");
answer = keyboard.nextLine().charAt(0) ;
}
if ((answer == 'C') || (answer == 'c'))
{
money = money + 250;
id = id + 1;
System.out.print ("\nCorrected, you earned " + money + " Euros\n");
}
else if ((answer == 'B') || (answer == 'b') || (answer == 'A') || (answer == 'a')
|| (answer == 'D') || (answer == 'd'))
{
money = money/2;
System.out.print ("\nWrong, you lose, your money is " + money + " Euros\n"
+"Game over, good luck next time\n");
quit = true;
}
else if ((answer == 'E') || (answer == 'e'))
{
System.out.print ("\nYou choose to quit, your money is: " + money + " Euros"
+"\nGood luck next time\n");
quit = true;
}
else if ((answer == 'S') || (answer == 's'))
{
id1 = id1 + 1;
System.out.print ("\nPlease choose your life saver:"
+"\nType 1 for \"Skip and get point\""
+"\nType 2 for \"Surf Wikipedia for answer\", Warning: Very Random"
+"\nType 3 for \"Asked Jere, Michal, Jaska, Marios for help\", Warning: Very Random"
+"\n\n");
int choice = keyboard.nextInt();
if (choice == 1)
{
money = money + 250;
id = id + 1;
System.out.print ("\nQuestion Skipped, earn " + money + " Euros.\n");
}
if (choice == 2)
{
Random rand = new Random();
int randomNum = rand.nextInt((4 - 1) + 1) + 1;
if (randomNum == 1)
{
money = money + 250;
System.out.print ("\nWiki said answer is C, right answer, ");
}
else if (randomNum == 2)
{
System.out.print ("\nWiki said answer is B ,wrong answer, Game over.\n"
+"You earned " + money + " Euros.\n");
quit = true;
}
else if (randomNum == 3)
{
System.out.print ("\nWiki said answer is A ,wrong answer, Game over.\n"
+"You earned " + money + " Euros.\n");
quit = true;
}
else if (randomNum == 4)
{
System.out.print ("\nWiki said answer is D ,wrong answer, Game over.\n"
+"You earned " + money + "Euros.\n");
quit = true;
}
}
if (choice == 3)
{
Random rand1 = new Random();
int randomNum1 = rand1.nextInt((4 - 1) + 1) + 1;
if (randomNum1 == 1)
{
money = money + 200;
System.out.print ("\nYou asked Jere and got the answer: C.\n"
+"Right answer, " + money + " Euros.\n");
}
if (randomNum1 == 2)
{
money = money + 200;
System.out.print ("\nYou asked Michal and got the answer: C.\n"
+"Right answer, " + money + " Euros.\n");
}
if (randomNum1 == 3)
{
System.out.print ("\nYou called Jaska and recieved a \"Whatever, I like milk, why not\" for an answer."
+ "\nYou answered \"Whatever, I like milk, why not\", Wrong answer."
+ "\nGame over, You earn " + money + " Euro.\n");
quit = true;
}
if (randomNum1 == 4)
{
System.out.print ("You called Marios and he gave you this answer:\n"
+ "\nAyy Lmao, get rekt m8, inb4 4chan raid."
+ "\nYou don't know what the fuck it mean."
+ "\nSo you quit with " + money + " Euros in your pocket.\n");
quit = true;
}
}
}
}
} }
Все, кажется, работает нормально, за исключением, когда я печатаю с использовать спасатель, после выбора 1, он пропустит этот вопрос, как я хочу, чтобы он, но он также дает мне индекс из связанной ошибки, и он говорит, что это на линии 150, я так запутался в этом, все остальные работают нормально.
Пожалуйста, помогите мне, спасибо
Можете ли вы опубликовать stacktrace и указать место, где возникает исключение? – Marv
Вы должны указать _where_, исключение происходит. Никто не хочет просматривать старую домашнюю свадьбу на 250 строк. – August
Что такое линия 150? Очень много кода для просмотра. –