0

Так что я в процессе создания небольшой текстовой приключенческой игры. У меня есть только 3 месяца опыта кодирования, но я решил взять этот большой проект с небольшими знаниями по кодированию, которые у меня есть. Я вырезал начало кода, в котором пользователь выбирает атрибуты, потому что это не имеет значения.Выбранный пользователем выбор не запускается, если оператор

Проблема, с которой я столкнулся, возникает, когда пользователю предлагается сделать выбор между "do thing" и "don't do thing". Всякий раз, когда код доходит до этого этапа, ни один из вариантов не будет вызывать out.println.

Кроме того, я понимаю, что вся игра в switch(YN), вероятно, очень неэффективна, но я не знаю другого способа сделать это без написания методов и классов, и я действительно ничего не понимаю, поэтому я Мы будем придерживаться этого метода main.

import static java.lang.System.*; 
import java.io.*; 
import java.util.*; 
public class TextAdventure{ 
    public static void main(String args[]){ 
     Scanner reader=new Scanner(in); 
     out.println("Do you wish to continue with these attributes? Y\\N? "); 
     String answer=reader.next(); 
     answer=answer.toUpperCase(); 
     char YN=answer.charAt(0); 
     String choice1="",choice1a=""; 
     switch(YN){ 
      case 'N': 
       out.println("\nThe great game god now smites you so you may select different attributes.\n"); 
       break; 
      case 'Y': 

       out.println("\nThis is a placeholder for the game."+ 
          "\ndo don't"); 

       while(!(choice1.equals("do"))&&!(choice1.equals("don't"))){ 
        choice1=reader.next(); 
        choice1=choice1.toLowerCase(); 
       } 
       if(choice1.equals("do")){ 
        out.println("\nThis is the path for \"do\". What do you do now?"+ 
           "\ndo thing don't do thing"); 

        while(!(choice1a.equals("do thing"))&&!(choice1a.equals("don't do thing"))){ 
         choice1a=reader.next(); 
         choice1a=choice1a.toLowerCase(); 
        } 
        if(choice1a.equals("do thing")){ 
         out.println("\nYou did thing, and you have tripped and fallen. You are dead."); 
         break; 
        } 
        else if(choice1a.equals("don't do thing")){ 
         out.println("\nYou didn't do thing. Good choice. But the game god smites you out of boredom."); 
         break; 
        } 
       } 
       else if(choice1.equals("don't")) 
        out.println("\nThis is the path for \"don't\". The great game god now smites you.\n"); 

       break; 
      default: 
       out.println("\nYou must select an available character choice. The great game god now smites you.\n"); 
       break; 
     } 
    } 
} 

ответ

1

Когда вы собираетесь читать строки с пробелами. Вы должны использовать nextLine():

choice1a = reader.nextLine(); 
+0

Я полностью забыл, что 'nextLine' даже существовал. Я должен использовать это, потому что 'choice 1a = reader.next();' просто сохранит следующую найденную строку, не так ли? – Insederec

+0

Да, вы можете узнать, что, напечатав 'choice1a' после его чтения. – Christian

Смежные вопросы