字符串数组上的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');
            }

}