字符串数组上的Java比较字符
假设我有一个如下的字符串数组:字符串数组上的Java比较字符,java,Java,假设我有一个如下的字符串数组: String[][] fruits = {{"Orange","1"}, {"Apple","2"}, {"Arancia","3"}; System.out.println((fruits[i][0].charAt(1)).equals("r")); 如果我这样做: for (int i = 0; i < fruits.length;i++){ System.out.println(fruits[i][0].charAt(1
String[][] fruits = {{"Orange","1"}, {"Apple","2"}, {"Arancia","3"};
System.out.println((fruits[i][0].charAt(1)).equals("r"));
如果我这样做:
for (int i = 0; i < fruits.length;i++){
System.out.println(fruits[i][0].charAt(1));
}
for (int i = 0; i < fruits.length;i++){
Character compare = fruits[i][0].charAt(1);
System.out.println(compare.equals('r'));
}
如果我这样做:
for (int i = 0; i < fruits.length;i++){
System.out.println(fruits[i][0].charAt(1));
}
for (int i = 0; i < fruits.length;i++){
Character compare = fruits[i][0].charAt(1);
System.out.println(compare.equals('r'));
}
这是我的问题。可以在同一行上使用charAt和equals吗,我的意思是,类似这样的东西:
String[][] fruits = {{"Orange","1"}, {"Apple","2"}, {"Arancia","3"};
System.out.println((fruits[i][0].charAt(1)).equals("r"));
问候,
如果先将
charAt()
的结果转换为Character
,则favolas是:
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
的版本,这将在编译时捕获。从String.charAt()返回的char
数据类型是一个原语,而不是一个对象。因此,您可以使用==
操作符执行比较,因为它将比较值,而不是参考值
System.out.println((fruits[i][0].charAt(1) == 'r'));
当然可以!试试这个:
System.out.println((fruits[i][0].charAt(1)) == 'r');
我们正在进行原语比较(char到char),因此可以使用==而不是.equals()。请注意,这是区分大小写的
另一个选项是在使用.equals()之前将字符显式转换为字符串
如果您使用的是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');
}
}