Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用string参数(即用户输入的字符串)生成if-else语句?_Java_Loops_If Statement_While Loop_Do While - Fatal编程技术网

Java 如何使用string参数(即用户输入的字符串)生成if-else语句?

Java 如何使用string参数(即用户输入的字符串)生成if-else语句?,java,loops,if-statement,while-loop,do-while,Java,Loops,If Statement,While Loop,Do While,我正在编写一个程序,要求用户输入他的姓名、地址和电话号码。输入数据时,程序应打印数据,并要求用户输入是或否来验证数据。应重复此过程,直到用户满意并回答是 现在在我的例子中,我可能以不适当的方式将if-else语句放在while循环中。这就是为什么它没有像预期的那样工作我如何解决这个问题? 此外,我只尝试了要求输入用户名的提示但是如果我想以类似的方式为不同的问题添加更多提示,那么我该怎么做呢? 代码: 要比较字符串,请使用方法equals()或equalsIgnoreCase()。这将解决您的问题

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

现在在我的例子中,我可能以不适当的方式将if-else语句放在while循环中。这就是为什么它没有像预期的那样工作我如何解决这个问题?

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

代码:


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

您应该这样使用它:

if (input.equals(yes)) {
  System.out.println("Your name is: " + name);
}
else if (input.equals(no)) {
 System.out.println("Enter your name again");
}
    System.out.println("Enter your name:");     //This you already did
    name = userInput.next
    System.out.println("Enter your surname:");
    String surname = userInput.next();
因为声明:

input==yes;
仅检查引用是否相等

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

if (input.equals(yes)) {
  System.out.println("Your name is: " + name);
}
else if (input.equals(no)) {
 System.out.println("Enter your name again");
}
    System.out.println("Enter your name:");     //This you already did
    name = userInput.next
    System.out.println("Enter your surname:");
    String surname = userInput.next();
完整代码:(请求多个提示)


break
语句应该放在里面

if(input.equals(yes)) 

不在
else{}
中,因为JDK 7可以:


也许这适用于你的情况。但是你失去了选择。

首先,将
==
更改为
。如果程序员看到它,他们会哭(我在写这篇评论时哭了)。其次,使用
equalsIgnoreCase
。您不想强制用户在输入yes/no响应时使用特定的字母大小写。这不是OP的问题。我还想添加'trim()'我建议交换参数/对象,因此它看起来像:
yes.equals(input)
。我不认为
Scanner
会返回空值,但当我将用户输入的数据与常数进行比较时,我总是将常数放在第一位以避免NPE。OP不是这样要求的。。。他想知道是否在这段时间内再添加一个问题loop@Craig是的,你是对的,但这些只是非正式的编码惯例,每个人都有不同的遵循:)@Ascalonian我认为我们不应该通过编写准确的代码来满足用户,这就是为什么我们没有编写完整的代码,否则他将无法学会自己做事情,此外,他问的代码与他已经写过的代码几乎相似:)@SarthakMittal,但不编写完整的代码来帮助OP自己学习,和发布一个没有真正回答问题的答案是有区别的。如果他们遵循这一点,开关可以做一个
toUpperCase()
在字符串上,并使每个大小写都用大写。@Ascalonian是的,这也是我的解决方案。
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;
}