再次使用java中的字符串比较
新手问题,但我有这个代码:
import java.util.*; import java.io.*; public class Welcome1 { // main method begins execution of Java application public static void main( String[] args ) { String confirm = "y"; while(confirm=="y") { System.out.println( "Welcome to Java Programming!" ); System.out.println( "Print Again? (y/n)" ); Scanner input = new Scanner(System.in); confirm = input.nextLine(); } } }
我只需要在用户输入“y”时再次打印欢迎信息。 但它不起作用。 有任何想法吗?
在Java中,使用==
比较基本类型(int,long,boolean等)的相等性,而使用equals()
方法比较Object类型(String等)的equals()
。 如果使用==
比较两个对象类型,则需要检查标识 ,而不是相等 – 也就是说,您将validation两个对象是否在内存中共享完全相同的引用(因此是相同的对象); 一般来说,你需要的只是validation它们的值是否相同,为此你使用equals()
。
作为一个很好的编程实践,最好比较这样的字符串,翻转字符串的顺序:
while ("y".equals(confirm)) {
通过这种方式,您可以确保比较将起作用,即使confirm
为null,也可以避免潜在的NullPointerException
。
对于字符串比较,请使用.equals()。
while(confirm.equals("y")){
你应该使用equals()而不是operator ==。
operator ==检查这两个对象是否实际上是同一个对象,而你想检查它们是否相等。
代码快照:
while(confirm.equals("y")) {
重写您的代码如下(只是一个例子):
import java.util.*; import java.io.*; public class Welcome1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); String confirm = "y"; do { System.out.println("Welcome to Java Programming!"); System.out.println("Print Again? (y/n)"); confirm = input.nextLine(); } while (confirm.equalsIgnoreCase("y")); } }
- 谷歌电子表格API,400错误错误请求:无法解析范围
- 做运营商而不是整个订户
- 为什么Jar Bundler会进入Mac OS X Mountain Lion 10.8.2
- 如何从相互引用的XML标记创建Java对象?
- 什么版本的JaspeReports支持Java 8?
- 使用Maven和IntelliJ,“-Dmaven.multiModuleProjectDirectory未设置”问题
- java read write unicode / UTF-8 filenames(not contents)
- 将java.util.date默认格式转换为Java中的Timestamp
- JBoss 7.1.1.Final的JSF实现版本是什么?