繁体   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