0

这是我的代码

  import greenfoot.*;
  import javax.swing.JOptionPane;

    public class tableTester extends Actor
    {
    String userInput;
    int level;
    public void act() 
    {
        input();
        if(level == 1) {
            levelOne();
        } else {
            levelTwo();
        }
    }

public void input()
{
    do{
        userInput = JOptionPane.showInputDialog("Press 1 to play level 1 \nPress 2 to play level 2");
        Integer level = Integer.parseInt(userInput);
    }while((level <= 0) || (level >= 3));
}

public void levelOne()
{
    System.out.println("Level 1");
}

public void levelTwo()
{
        System.out.println("Level 2");
    }
}

我今天才开始编程,正在尝试做一个 do while 循环。我希望它循环直到用户输入 1 或 2 并调用下一个方法(取决于用户输入。如果用户输入一个然后方法 levelOne() 被调用,对于 2 levelTwo() 被调用

4

1 回答 1

0

在输入中,您声明了一个本地“ level”变量。此级别变量“隐藏”类“ level”字段。所以你正在接受 level 变量,分配它,然后丢弃它并退出方法,你act()方法中的代码没有效果,因为 level 字段永远为零。修复代码的最佳 wau 是通过敲掉Integer部分来避免变量声明:

public void input()
{
    do{
        userInput = JOptionPane.showInputDialog("Press 1 to play level 1 \nPress 2 to play level 2");
        level = Integer.parseInt(userInput);
    }while((level <= 0) || (level >= 3));
}

(或者,您可以直接从方法返回值,但这需要更多的代码修改。)

于 2015-09-02T19:33:37.493 回答