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