如何解决当char是空格时如何比较而不得到负值
这里的初学者,我们被分配了一项任务,以在两个不同的字符串中找到常见的辅音。如果输入中没有空格,此代码可以完美运行,但在此作业中,我们从用户那里获取输入,它们是名字和姓氏。如果没有空格,我会得到正确的常用字符值,但是当名字和姓氏之间有空格时,它会给我一个索引越界错误,因为空格使它成为负数。任何帮助都会很好,谢谢。
public static int commonCharacters(String string1,String string2) {
final int alphabetLength = 26;
int count = 0;
int[] counting1 = new int[alphabetLength];
int[] counting2 = new int[alphabetLength];
Arrays.fill(counting1,0);
Arrays.fill(counting2,0);
for (char c : string1.toCharArray()) {
c = Character.toLowerCase(c);
counting1[c - 'a']++;
}
for (char c : string2.toCharArray()) {
c = Character.toLowerCase(c);
counting2[c - 'a']++;
}
for(int i = 0; i < alphabetLength; i++) {
System.out.printf(String.valueOf(counting1[i]),counting2[i]);
count += Math.min(counting1[i],counting2[i]);
}
return count == 0 ? 1 :count;
}
}
解决方法
您可以在字符串 string1 = string1.trim();
的末尾修剪空格
这是对您的代码的一些更改。您只需要 if 语句来检查字符是否为字母表。您不需要 Arrays.fill
,因为在 Java 中数组值被初始化为零。
你写的作业是关于计算辅音的,但你的代码计算所有常见的字母。
public static int commonCharacters(String string1,String string2) {
final int alphabetLength = 26;
int count = 0;
string1 = string1.toLowerCase();
string2 = string2.toLowerCase();
int[] counting1 = new int[alphabetLength];
int[] counting2 = new int[alphabetLength];
for (char c : string1.toCharArray()) {
if (c < 'a' || c > 'z') {
continue;
}
counting1[c - 'a']++;
}
for (char c : string2.toCharArray()) {
if (c < 'a' || c > 'z') {
continue;
}
counting2[c - 'a']++;
}
for(int i = 0; i < alphabetLength; i++) {
System.out.printf("%c %d %d%n",'a' + i,counting1[i],counting2[i]);
count += Math.min(counting1[i],counting2[i]);
}
return count;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。