2017-04-25 152 views
-2

我似乎有我的扫描仪/ Eclipse自动运行用户输入。我有一台扫描仪初始化为:Java扫描仪使用旧输入

Scanner in = new Scanner(System.in); 

一个菜单:

@Override 
void update() { 
    //welcome 
    System.out.println("-----Welcome to the Pet Game-----"); 
    System.out.println(); 
    System.out.println("1. Play"); 
    System.out.println("2. Help"); 
    System.out.println("3. Dev Mode"); 
    int choice = in.nextInt(); 
    switch(choice){ 
    case 1: 
     playLoop(); 
     break; 
    case 2: 
     helpPage(); 
     break; 
    case 3: 
     devMode(); 
     break; 
    } 

} 

出于某种原因,它在此菜单中自动输入2。并在此菜单上跟随3:

// main menu 
     System.out.println("This is Day " + (i+1) + " you have " + dayActions + " Actions left."); 
     System.out.println("1. View Pet Status"); 
     System.out.println("2. Shop"); 
     System.out.println("3. Skip Action"); 
     System.out.println("4. Play"); 
     System.out.println("5. Feed"); 
     System.out.println("6. Bathroom"); 
     System.out.println("7. Sleep"); 

     int choice = in.nextInt(); 
     System.out.println(); 

我认为这可能是由于我的GameState类,但我不确定。 游戏状态类:

abstract class GameState { 

    abstract void update(); 

    protected void pushState(GameState state) { 
     PetGame.pushState(state); 
    } 

    protected void popState() { 
     PetGame.popState(); 
    } 
} 

StoreState(这就是它是跳跃到类在我的代码我找不到它的任何引用不知道为什么它是怎么回事。)

public class StoreState{ 

    @Override 
    void update() { 
     // TODO Auto-generated method stub 

    } 


} 

谢谢你的帮助。

+0

请不要**更新您的问题,因为您的问题正在解决。这完全改变了最初问题的背景。在做这件事情时,你没有在这里做任何好处。在你的原始问题下添加一个编辑部分,说明你面临的新问题。 –

+0

@OusmaneMahyDiaw您的意图通常是正确的,但*“在原始问题下面追加编辑部分,说明您面临的新问题”*是错误的。必须在新的帖子/问题中提出一个新问题(这已经在meta上多次提出并讨论过,例如:https://meta.stackoverflow.com/questions/298948/question-answered-buta-a-新问题出现) – Tom

+0

@Tom谢谢,还在学习你看到的^^系统。赞赏。 –

回答

-1

你需要利用break声明特定case已经得到满足后跳出switch声明,否则,你会得到一种叫做fallthrough

case 1: 
    playLoop(); 
    break; 
case 2: 
    helpPage(); 
    break; 
case 3: 
    devMode(); 
    break; 
+0

第一:这个问题是一个骗局,所以不要回答(代之以标记)。第二:在'case'之后和实际方法调用之前的'break'? – Tom

+0

我称之为:不要发布不好的答案。 – Tom

+0

我已经添加了它们,但它似乎仍然因为可能的StoreState而停止? –