[英]String comparison in java, again
新手問題,但我有這個代碼:
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()
。 如果使用==
比較兩個對象類型,則需要檢查標識 ,而不是相等 - 也就是說,您將驗證兩個對象是否在內存中共享完全相同的引用(因此是相同的對象); 一般來說,你需要的只是驗證它們的值是否相同,為此你使用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"));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.