最近,在进行程序时,我遇到了一个问题。以下是程序的一部分
public static int numberNeeded(String first, String second) {
int[] lettercounts = new int[26];
for(char c : first.toCharArray()){
lettercounts[c-'a']++;
}
我不明白这行代码的作用:
lettercounts[c-'a']++;
我猜想它正在递增lettercounts数组中特定字符的值(最初为0);我猜’a’的索引是0,’z’的索引是25。但是我想了解那小段代码是如何工作的。
目的是计算每个字符的出现次数。
c - 'a'
是一种获取字符在字母表中位置的巧妙方法。'a' - 'a'
会给你0。'b' - 'a'
会给你1。'c' - 'a'
会给你2,依此类推。
该值用作数组的索引(如您正确指出的那样,它以零初始化),并且计数递增。
值得注意的是,如果a-z
字符串中不存在任何其他字符(包括大写字符),这将中断,并且您会看到一个IndexOutOfBoundsException
问题内容: 我正在用Java做一些String算法,我注意到无论我在哪里包含一个值为0(零)的char,它都标志着String的结尾。像这样: 这种行为的原因/原因是什么? 问题答案: 该字符为空字符。这是一个控制字符,它 不会 终止字符串,这也不是字符串在Java中的工作方式(不过,字符串也是在C中的工作方式。)
问题内容: 最近,我阅读了很多有关Unicode代码点的信息,以及它们随着时间的演变,并确保我也阅读了http://www.joelonsoftware.com/articles/Unicode.html。 但是我找不到真正的原因是Java为什么将UTF-16用作字符。 例如,如果我的字符串包含1024个ASCII范围的字母。这意味着等于2KB的字符串内存,它将以任何方式消耗。 因此,如果Java
sizeof(char)和sizeof(bool)都等于1(在我的编译器/系统/whatever中,我听说它并不总是相同的值),一个bool只能存储true或false,而char可以接受更多的值,并且可以使用按位运算符充当多个bool变量(8位,每个位可以用作1 bool共8个bool) 那么使用bool而不是char有什么好处吗? 那么除了可读性,还有别的吗?我在某处读到,int比short或
问题内容: 这工作正常: 但这不是-因为bar.charAt(x)返回一个char: 似乎从char中减去‘0’会将其强制转换为整数。 为什么或如何减去字符串“ 0”(或它是一个字符?)将另一个字符转换为整数? 问题答案: 这是一个聪明的把戏。字符实际上与短裤的类型/长度相同。现在,当您有一个表示ASCII / Unicode数字的字符(如“ 1”),并从中减去最小的ASCII / Unicode
问题内容: 所以我正在学习Java,但是我有一个问题。看来,类型,并且将是只是我会永远需要的变量方面的一切,也许除外好时,需要在多个十进制数字都可以使用。 我的问题是,其他类型的如,,,等曾经在正常的日常编程中使用?这些可以用于哪些实际用途?它们的作用是什么? 问题答案: 除了“ short”(可能是对空间的浪费)之外,“ short”可能是一个例外-有时候,从字面上看,它们都是上课的动力: 当您
描述 (Description) C库函数char *strtok(char *str, const char *delim)使用分隔符delim将字符串str分解为一系列标记。 声明 (Declaration) 以下是strtok()函数的声明。 char *strtok(char *str, const char *delim) 参数 (Parameters) str - 修改此字符串的内容