簡體   English   中英

再次使用java中的字符串比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM