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