java - 为什么我在 Eclipse 控制台和调试器中都看不到 Java char 数组中的内容?

标签 java arrays eclipse char

我无法将字符数组打印到 Eclipse 控制台,也无法在 Eclipse 中调试时查看数组内容。我编写了一个程序,使用数组从字符串返回第一个非重复字符索引。该程序工作非常简单,但我发现很有趣的是,在操作/调试程序时我看不到 char 数组的内容。 SOP 语句打印 null OR \u0000。如何在下面的程序中查看数组“a”的实际内容?

public static int getFirstNPCv2 (String s) {
    char a[] = new char[26];
    s=s.toLowerCase();
    for (char c : s.toCharArray()){
        a[c - 'a']++;
        //System.out.println(a[c - 'a']);
    }
    System.out.println(a);
    for (char c : s.toCharArray()){
        if(a[c - 'a'] == 1){
            return s.indexOf(c);
        }
    }
    return -1;
}

getFirstNPCv2("titanic") 返回 3,这是正确的,但为什么我看不到数组 'a' 的内容

最佳答案

这是因为您的 char 数组中没有包含任何有意义的字符。 您实际上在 char 数组中保存了数字。您创建了新的 char 数组,其元素的初始值为 0。

char a[] = new char[26];

稍后,如果该数组的某些元素与输入字符串中包含的字符索引匹配,您将增加这些元素:

for (char c : s.toCharArray()){
    a[c - 'a']++;
    //System.out.println(a[c - 'a']);
}

不过,您的 char 数组不包含任何有意义的字符。它将包含值为 0,1,2,3... 的元素,具体取决于您的输入字符串,并且这些值不代表任何可读的字母或数字。但这并不妨碍您打印存储在 char 数组 a 中的值。您可以这样打印它们:

    for(int i = 0; i<a.length; i++)
    {
        int b = a[i];
        System.out.print(b);
    }

我认为对于你的方法,你应该使用 int 数组。快乐编码。

关于java - 为什么我在 Eclipse 控制台和调试器中都看不到 Java char 数组中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704422/

相关文章:

java - 使用assertEquals 和“比较失败”窗口时如何显示对象字段而不是引用

java - 在oracle中使用long或Long映射 "NUMBER"列?

android - 无法将此字符串转换为 JSON

linux - 如何更改默认的 Eclipse 控制台?

Eclipse 将鼠标悬停在调试中的变量上不显示内容

java - 高亮链接

c++ - 数组中从 `int' 到 `int*' 的无效转换

c - 如何在实模式下使用 C 字符数组

java - 无法启动 WAR,嵌套异常是 java.lang.NoClassDefFoundError :

java - 如何使用 Jsch 通过 SSH 运行需要密码的命令