如何询问用户是否要退出程序并在Java中打印出感谢信息

时间:2015-11-16 21:50:00

标签: java

我正在学习第一个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),程序将重新开始。谢谢!

3 个答案:

答案 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

enter image description here