再次使用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")); } }