我正在学习第一个Java课程并开始我的第二个项目。该项目旨在将程序创建为虚拟三维工作区域的房间网络。每个房间都提供虚拟环境,可以组合成模拟或虚拟世界。 基本上,程序的开头,我使用while循环,最后我想询问用户是否要退出程序,并打印一条感谢信息。但是,while循环不起作用。无论我输入y还是n,我的程序都会退出。以下是我的代码。
import java.util.Scanner;
public class Project
{
public static void main(String[] args)
{
Map map = new Map();
int floor = 0;
int row = 0;
int col = 0;
String input = " ";
Scanner scan = new Scanner(System.in);
// Begin user dialog. Welcome message
System.out.println("Welcome to the L.A Underground! (Verson 1.1)");
System.out.println();
String choice = "y";
while(!input.equalsIgnoreCase("quit"))
{
input = scan.nextLine().toLowerCase();
// My codes are here
if (input.equals("south")
{statement}
else
System.out.println("You can't go that way.");
else if (input.equals("quit"))
{ // See if user wants to continue
System.out.println("Do you wish to leave the Underground (Y/N)? >");
choice = scan.nextLine();
System.out.println();
}
// if user enters other words than quit
else
System.out.println("I don't recognize the word '" + input +"'");
}
System.out.println("Thank you for visiting L.A Underground.");
}
}
当我输入"退出"控制台打印了消息:"你想离开地铁吗? (Y / N)? >&#34 ;.我试过Y / N(y / n)程序终止了。任何帮助表示赞赏。谢谢。
更新:抱歉让您感到困惑。我希望程序运行的是当用户输入"退出"时,消息将打印出来"你想离开地下(Y / N)吗?""如果用户键入"你好",则消息将是"我不理解“你好”这个词。'"。当用户键入y时,程序将退出,否则(键入n),程序将重新开始。谢谢!
答案 0 :(得分:1)
在循环内部询问用户输入。如果input.equalsIgnoreCase("quit")
,则提示用户“您确定”消息。如果input.equalsIgnoreCase("y")
,那么break
循环,否则,继续。
Scanner scan = new Scanner(System.in);
String input;
// Begin user dialog. Welcome message
System.out.println("Welcome to the L.A Underground! (Verson 1.1)");
System.out.println();
while (true) {
input = scan.nextLine();
if (input.equalsIgnoreCase("quit")) {
System.out.print("Do you wish to leave the Underground (Y/N)? >");
if (scan.nextLine().equals("y")) {
break;
}
}
// input wasn't "quit", so do other stuff here
}
System.out.println("Thank you for visiting L.A Underground.");
答案 1 :(得分:1)
你的代码会一直循环直到#34; quit" ...然后要求"是/否" ......然后简单地退出,无论如何。
您需要更改循环,以便它包含 BOTH "我的代码在这里" AND "退出y / n"检查。
实施例
...
boolean done = false;
while(!done) {
//MY CODES ARE HERE
if (input.equalsIgnoreCase("quit") && getYesNo ()) == 'y') {
done = true;
}
}
" getYesNo()"是你写的方法。例如:
char getYesNo () {
System.out.print("Do you wish to leave the Underground (Y/N)? >");
String line = scan.nextLine();
return line.charAt(0);
}
答案 2 :(得分:0)
在您发布的代码中,您的循环由条件!input.equalsIgnoreCase("quit")
控制。也就是说,如果input
是"退出",则循环终止。
但仅当input
为"退出"
if (input.equals("quit"))
{
// See if user wants to continue
System.out.println("Do you wish to leave the Underground (Y/N)? >");
choice = scan.nextLine();
System.out.println();
}
因此,如果执行此块,!input.equalsIgnoreCase("quit")
将计算为false
,并且循环终止。那不是你想要的。
现在您知道错误了,修复它很容易。检查上面choice
块中if
的值:如果choice
不是,请不要退出,即将input
重置为默认值。
我已粘贴了工作代码here on pastebin。