编辑程序以使用Java中的用户输入执行do while / while循环

时间:2018-03-18 11:38:29

标签: java

我对java很新,所以我没有太多的语法经验,我已经尝试了一些在线教程,并观看了一些视频,并在用户输入的Java环路中进行。但是,我尝试的每个编辑都会破坏我的代码。下面的程序从用户那里得到一个答案,一个从1到20的整数,并且有if语句,它们执行不同的场景。但是,我试图让它继续向用户询问答案,直到他们输入0为止。这是相关代码的一部分:

System.out.print("Type in the pokedex number of the pokemon:");
        int answer = Integer.parseInt(reader.nextLine());
        if (answer == 1){ 
                            System.out.println(
                            "\nPokemon: " + Bulbasaur.getname() +     
                            "\nType: " + Bulbasaur.getthing_about() +
                            "\nHealth: " + Bulbasaur.gethp() +
                            "\nAttack: " + Bulbasaur.getattack() +
                            "\nDefense: " + Bulbasaur.getdefense() +      
                            "\nSpecial attack: " + Bulbasaur.getspattack() +        
                           "\nSpecial defense: " + Bulbasaur.getspdefense()+ 
                            "\nSpeed: " + Bulbasaur.getspeed() +
                            "\nTotal: " + Bulbasaur.gettotal());
        }

。 。

还有19个与此类似的其他if语句(我知道这是效率低下的代码,但如果它循环,我将使其高效)。 如何添加do while / while循环来循环这些语句,直到输入0?

3 个答案:

答案 0 :(得分:2)

您需要在循环条件中检查answer。您可以进行检查和分配,以便在一行中回答

int answer;
while ((answer = Integer.parseInt(reader.nextLine())) != 0) {
    // code here
}

答案 1 :(得分:1)

如果您保留getName()和所有非静态'等方法,您的代码会更有效率,以便可以从类的对象中调用它们。

如果您已经了解如何使用int[]double[]等类型的数组,您可以做的是创建一个Pokemon的对象数组,如下所示:

Object[] pokemon = {new Bulbasaur(), new Ivysaur(), new Venusaur()}; // etc. etc.

int answer = Integer.parseInt(reader.nextLine());
answer = answer - 1; // because arrays start at zero, not one

System.out.println("\nPokemon: " + pokemon[answer].getname() +     
"\nType: " + pokemon[answer].getthing_about() +
"\nHealth: " + pokemon[answer].gethp() +
"\nAttack: " + pokemon[answer].getattack() +
"\nDefense: " + pokemon[answer].getdefense() +      
"\nSpecial attack: " + pokemon[answer].getspattack() +        
"\nSpecial defense: " + pokemon[answer].getspdefense()+ 
"\nSpeed: " + pokemon[answer].getspeed() +
"\nTotal: " + pokemon[answer].gettotal());

如果您需要,请点击a guide to using Objects

通过使这些方法成为非静态方法,您可以从属于数组的对象中调用它们,并且只需向该数组中添加更多的Pokemon就可以向它添加, new WhateverPokemon() ..

此外,如果要将选项打印到用户,可以这样做:

for(int i = 0; i < pokemon.length; i++)
{
    System.out.println(i+1+". "+ pokemon[i].getName());
}

如果您要添加此代码,请将其放在Object[] pokemon ...

之后

答案 2 :(得分:0)

这是您想要的非常直观的实现:

System.out.print("Type in the pokedex number of the pokemon:");
    int answer = -1;  // Initialize to a trivial value different from 0
    while (answer != 0) {  // It will not enter here if initialized to 0!
        answer = Integer.parseInt(reader.nextLine());
        if (answer == 1){
            // Code from the if statement
        }  // End of if
    }  // End of while

正如@Coffeehouse所说,你应该看看阵列是什么,并尝试适当地使用它。它会缩短你的代码。但是,一步一步:)