if / else语句的用户输入

时间:2014-03-11 22:22:03

标签: java

它只是我的第二个程序与java和我遇到一些问题。 我正在尝试从用户那里得到输入,无论是或否,然后基于那个转到if else状态。继承人到目前为止我所拥有的

 String answer= UI.askString("Do you want to continue?");

   if(answer=="yes"){
       UI.println("Lets go");
   }
   else if(answer == "no"){
       UI.println("Thank you. Goodbye");
   }
   else{
       UI.println("Please enter yes or no");
}

我想也许更好地使用布尔呢? 非常感谢任何帮助!

(如果你想知道,它是一个自定义导入因此在某些行中有奇怪的语法)

干杯。

3 个答案:

答案 0 :(得分:1)

当您将Java中的两个Strings==运算符进行比较时,会比较它们以查看它们是否是同一个对象,而不是它们是否包含相同的文本。因此,您可以键入" yes",当您使用if (answer == "yes")时,比较失败,因为您从UI.askString返回的对象是另一个对象,存储在另一个位置内存,而不是编译器从文字String生成的"yes"

要比较两个字符串的值,您需要编写answer.equals("yes")"yes".equals(answer)。任何一个都可以使用,并将调用equals类的String方法,该方法将比较实际文本。

后一种语法"yes".equals(answer)经常被推荐,因为它不会导致NullPointerException,即使变量answer设置为null。这是因为equals方法处理null并且只返回false。另一方面,如果您使用answer.equals("yes")表单并且answer为null,那么您将尝试在null上调用方法并抛出异常。

答案 1 :(得分:0)

您要找的是一个对话框。这是带有代码的oracle示例。这比我在这里写的更多。有大量的肯定,没有框和用户输入的检测。

http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

快速回答:

int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton);
if(dialogResult == JOptionPane.YES_OPTION){ ... }

其他选择......

 YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, and CLOSED_OPTION

对于命令行程序,您需要...

import java.util.Scanner;

代码看起来像......

Scanner in = new Scanner(System.in);
String line = in.nextLine();

//ask them to write yes, no, whatever

if(line.equal("yes"){ }
else if (line.eqals("no") {}
else {}

答案 2 :(得分:0)

使用MikeG010590的答案,你可以尝试:

Scanner in = new Scanner(System.in);
    String line;
    System.out.println("you want to continue?");
    Boolean exit = null;
    do {
        line = in.nextLine();
        switch (line) {
            case "yes":
                exit = false;
                break;
            case "no":
                exit = true;
                break;
            default:
                System.out.println("Please enter yes or no");
                break;
        }
    }
    while (exit == null);
    System.out.println(exit ? "Thank you. Goodbye" : "Lets go");