我对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?
答案 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所说,你应该看看阵列是什么,并尝试适当地使用它。它会缩短你的代码。但是,一步一步:)