簡體   English   中英

Java比較字符串數組上的char

[英]Java compare char on string array

想象一下,我有一個這樣的String數組:

String[][] fruits = {{"Orange","1"}, {"Apple","2"}, {"Arancia","3"};

如果我這樣做:

     for (int i = 0; i < fruits.length;i++){
         System.out.println(fruits[i][0].charAt(1));
            }

它將打印:

r
p
r

如果我這樣做:

     for (int i = 0; i < fruits.length;i++){
         Character compare = fruits[i][0].charAt(1);
         System.out.println(compare.equals('r'));
            }

它將打印:

true
false
true

所以這是我的問題。 是不是可以在同一行使用charAt和equals,我的意思是,像這樣:

System.out.println((fruits[i][0].charAt(1)).equals("r"));

問候,

favolas

是的,前提是您將charAt()的結果轉換為Character first:

System.out.println(Character.valueOf(fruits[i][0].charAt(1)).equals('r'));

更簡單的版本是寫

System.out.println(fruits[i][0].charAt(1) == 'r');

我個人總是更喜歡后者。

你的版本不起作用的原因是charAt()返回char (而不是Character ),而char是一個基本類型,沒有equals()方法。

代碼中的另一個錯誤是在equals("r")使用雙引號。 遺憾的是,這個會編譯並可能導致痛苦的調試會話。 使用上面基於char的版本,這將在編譯時捕獲。

當然! 嘗試這個:

System.out.println((fruits[i][0].charAt(1)) == 'r');

我們正在進行原始比較(char到char),因此我們可以使用==而不是.equals()。 請注意,這是區分大小寫的。

另一種選擇是在使用.equals()之前將char顯式地轉換為String

如果您使用的是現代版本的Java,您還可以使用增強的for語法來實現更清晰的代碼,如下所示:

public static void main(String[] args) {
    String[][] fruits = {{"Orange","1"}, {"Apple","2"}, {"Arancia","3"}};
    for (String[] fruit: fruits){
        System.out.println((fruit[0].charAt(1)) == 'r');
            }

}

String.charAt()返回的char數據類型是基元,而不是對象。 因此,您可以使用==運算符來執行比較,因為它將比較值,而不是參考。

System.out.println((fruits[i][0].charAt(1) == 'r'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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