public static void main(String[] args) {
StackX theStack = new StackX(99);
String current = "Enterprise";
int logOut = 1;
String planetName;
int secretCode;
//This is the start out, do not loop this
System.out.println("You are on the enterprise, where would you like to teleport?");
//while loop will be done after reaching Io
do {
Scanner input = new Scanner(System.in);
//Grab input from user
System.out.println("Enter a planet name: ");
planetName = input.nextLine();
System.out.println("Enter a the four digit code for " + planetName + ": ");
secretCode = input.nextInt();
if (current.equals("Enterprise")){
if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
current = planetName;
Moon Europa = new Moon(planetName, secretCode);
theStack.push(Europa);
} else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
current = planetName;
Moon Titan = new Moon(planetName, secretCode);
theStack.push(Titan);
} else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
current = planetName;
Moon Rhea = new Moon(planetName, secretCode);
theStack.push(Rhea);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Titan")){
if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
current = planetName;
Moon Enterprise = new Moon(planetName, secretCode);
theStack.push(Enterprise);
} else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
current = planetName;
Moon Rhea = new Moon(planetName, secretCode);
theStack.push(Rhea);
} else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){
current = planetName;
Moon Elara = new Moon(planetName, secretCode);
theStack.push(Elara);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Rhea")){
if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
current = planetName;
Moon Enterprise = new Moon(planetName, secretCode);
theStack.push(Enterprise);
} else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
current = planetName;
Moon Titan = new Moon(planetName, secretCode);
theStack.push(Titan);
} else if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
current = planetName;
Moon Europa = new Moon(planetName, secretCode);
theStack.push(Europa);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Europa")){
if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){
current = planetName;
Moon Enterprise = new Moon(planetName, secretCode);
theStack.push(Enterprise);
} else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){
current = planetName;
Moon Rhea = new Moon(planetName, secretCode);
theStack.push(Rhea);
} else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
current = planetName;
Moon Metis = new Moon(planetName, secretCode);
theStack.push(Metis);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Elara")){
if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){
current = planetName;
Moon Titan = new Moon(planetName, secretCode);
theStack.push(Titan);
} else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
current = planetName;
Moon Metis = new Moon(planetName, secretCode);
theStack.push(Metis);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Metis")){
if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){
current = planetName;
Moon Europa = new Moon(planetName, secretCode);
theStack.push(Europa);
} else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){
current = planetName;
Moon Elara = new Moon(planetName, secretCode);
theStack.push(Elara);
} else if (planetName.equalsIgnoreCase("Io") && secretCode == 4792){
current = planetName;
Moon Io = new Moon(planetName, secretCode);
theStack.push(Io);
System.out.println("You have acquired the Macho Orb! Return to the Enterprise.");
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else if (current.equals("Io")){
if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){
current = planetName;
Moon Metis = new Moon(planetName, secretCode);
theStack.push(Metis);
} else {
logOut = 0;
System.out.println("You are dead.");
}
} else {
logOut = 0;
System.out.println("You are dead.");
}
} while((!current.equals("Io")) || (logOut != 0));
}这里主要的错误是do-while循环不会退出。该程序的前提是从一个行星跳到另一个行星,而planetName是目的地,电流是你所在的当前行星。我想要的是当current为"Io“时退出循环。每次“跳”到另一个行星后,目的地就变成了当前的行星。我已经测试过了,current确实等于"Io“,而它应该在
if (planetName.equalsIgnoreCase("Io") && secretCode == 4792) {
current = planetName;
Moon Io = new Moon(planetName, secretCode);
theStack.push(Io);
System.out.println("You have acquired the Macho Orb! Return to the Enterprise.");
}然而,循环仍在继续。
发布于 2015-04-21 05:51:32
while((!current.equals("Io")) || (logOut != 0));
应更改为
while((!current.equals("Io")) && (logOut != 0));
https://stackoverflow.com/questions/29758618
复制相似问题