如何使用字符串参数(即用户输入的字符串)创建if-else语句?

时间:2014-11-24 19:31:55

标签: java loops if-statement while-loop do-while

我正在编写一个程序,要求用户输入他的姓名,地址和电话号码。输入数据后,程序将打印数据并要求用户输入YES或NO来验证数据。重复此过程,直到用户满意并回答问题为是。

现在在我的情况下,我可能以不恰当的方式在while循环中放入了一个if-else语句。这就是为什么它不按预期工作的原因。 我该如何解决?

此外,我只尝试过要求输入用户名的promt。 但是如果我想以类似的方式添加更多提示和不同的问题那么我该怎么办?

代码:

package userinfo;    
import java.util.Scanner;

public class UserInfo {

    public static void main(String[] args) {    
        String name;
        String yes = "YES";
        String no = "NO";    
        Scanner userInput = new Scanner(System.in);

        System.out.println("Enter your name:");
        name = userInput.next();
        System.out.println("Please varify your name by typing YES or NO");

        while (true) {
            String input = userInput.next();
            if (input == yes) {
                System.out.println("Your name is: " + name);
            }
            if (input == no) {
                System.out.println("Enter your name again");

            } else {
                System.out.println("Invalid input! Enter value again:");
                break;
            }    
        }    
    }    
}

4 个答案:

答案 0 :(得分:2)

break语句应该进入

if(input.equals(yes)) 

不在else{}

答案 1 :(得分:1)

从JDK 7开始,可以use a String in a switch statement

public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
     String typeOfDay;
     switch (dayOfWeekArg) {
         case "Monday":
             typeOfDay = "Start of work week";
             break;
         case "Tuesday":
         case "Wednesday":
         case "Thursday":
             typeOfDay = "Midweek";
             break;
         case "Friday":
             typeOfDay = "End of work week";
             break;
         case "Saturday":
         case "Sunday":
             typeOfDay = "Weekend";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }
     return typeOfDay;
}

也许这适用于您的情况。你放弃了#equalsIgnoreCase()的选项。

答案 2 :(得分:0)

要比较字符串,请使用方法equals()equalsIgnoreCase()。这将解决您的问题。

答案 3 :(得分:0)

您应该像这样使用它:

if (input.equals(yes)) {
  System.out.println("Your name is: " + name);
}
else if (input.equals(no)) {
 System.out.println("Enter your name again");
}

因为声明:

input==yes;

仅检查引用是否相等

要从用户输入更多值,您可以这样做:

    System.out.println("Enter your name:");     //This you already did
    name = userInput.next
    System.out.println("Enter your surname:");
    String surname = userInput.next();

完整代码:(要求多个提示)

package userinfo;

import java.util.Scanner;

public class UserInfo {

public static void main(String[] args) {

    String name;
    int teleNum;
    String inputTeleNum;
    String yes = "YES";
    String no = "NO";

    Scanner userInput = new Scanner(System.in);

    while (true) {

        System.out.println("Enter your name:");
        name = userInput.next();

        System.out.println("Please varify your name by typing YES or NO");

        String input = userInput.next();

        if (input.equals(yes)) {
            System.out.println("Your name is: " + name);
        } else if (input.equals(no)) {
            System.out.println("Enter your name again");

        }

        while (true) {

            System.out.println("Enter your telephone number:");
            teleNum = userInput.nextInt();

            System.out.println("Please varify your telephone number by typing YES or NO");

            inputTeleNum = userInput.next();

            if (inputTeleNum.equals(yes)) {
                System.out.println("Your telephone num is: " + teleNum);
            } else if (inputTeleNum.equals(no)) {
                System.out.println("Enter your tele number again: ");

            }

        }

    }

}

}