我无法将字符数组打印到 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/