字符数组比较忽略大小写
character array comparison ignoring case
我正在为我的 Java class 介绍项目工作,该项目要求我比较两个数组中的两个字符,看看它们是否相同,忽略字母的大小写。它将正确答案的答案键与学生的测试答案进行比较。如果学生的答案与答案关键答案不匹配,则应增加错误问题的数量。
这是我目前的代码:
public static int gradeExam(char[] correct, char[] student)
{
int incorrect = 0;
for (int i = 0; i < correct.length; i++)
{
if (!student[i].equalsIgnoreCase(correct[i]))
{
incorrect++;
}
}
return incorrect;
}
这是答案键数组:
char[] correct = {'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B',
'C', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D', 'D'};
当我尝试编译时,出现此错误:
DriverTest.java:53: error: char cannot be dereferenced
if (!student[i].equalsIgnoreCase(correct[i]))
^
DriverTest.java:68: error: char cannot be dereferenced
if(!student[i].equalsIgnoreCase(correct[i]))
^
2 errors
我不知道在忽略大小写的情况下还能怎么做。我是 Java 的新手,所以如果这是一个明显的修复,我深表歉意。请帮忙,谢谢!
equalsIgnoreCase
是一种 String
方法。您不能在 char
上应用它。
你可以写
if (!Character.toLowerCase(student[i]) == Character.toLowerCase(correct[i]))
或
if (!Character.toUpperCase(student[i]) == Character.toUpperCase(correct[i]))
请用Character.toLowerCase()
将两个字符都改为小写,然后进行比较。
if (Character.toLowerCase(student[i]) != Character.toLowerCase(correct[i]))
{
incorrect++;
}
将两个字符转换为相同的大小写并进行比较
Character.toLowerCase(student[i]) == Character.toLowerCase(correct[i])
会做。
- equalsIgnoreCase() 是 String class 的一个方法,但是 student[i] 是一个 char 而不是 String。
- 您可以将字符与 (==, >, <, != ...)
- 先将char[]学生转为大写再比较
因为char
是基本类型所以没有和.methodName()
一样的方法,另外equalsIgnoreCase()
属于String
class。请更改为 Character
(包装 char
的 class)
if (Character.toLowerCase(student[i]) != Character.toLowerCase(correct[i])) {
incorrect++;
}
char 类型是原始类型 -- 不是对象 -- 因此不能取消引用
您可以在两边将字符转换为小写:
if (Character.toLowerCase(student[i])!=(Character.toLowerCase(correct[i])))
{
incorrect++;
}
字符 class 在 java.lang 包中。
我正在为我的 Java class 介绍项目工作,该项目要求我比较两个数组中的两个字符,看看它们是否相同,忽略字母的大小写。它将正确答案的答案键与学生的测试答案进行比较。如果学生的答案与答案关键答案不匹配,则应增加错误问题的数量。
这是我目前的代码:
public static int gradeExam(char[] correct, char[] student)
{
int incorrect = 0;
for (int i = 0; i < correct.length; i++)
{
if (!student[i].equalsIgnoreCase(correct[i]))
{
incorrect++;
}
}
return incorrect;
}
这是答案键数组:
char[] correct = {'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B',
'C', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D', 'D'};
当我尝试编译时,出现此错误:
DriverTest.java:53: error: char cannot be dereferenced
if (!student[i].equalsIgnoreCase(correct[i]))
^
DriverTest.java:68: error: char cannot be dereferenced
if(!student[i].equalsIgnoreCase(correct[i]))
^
2 errors
我不知道在忽略大小写的情况下还能怎么做。我是 Java 的新手,所以如果这是一个明显的修复,我深表歉意。请帮忙,谢谢!
equalsIgnoreCase
是一种 String
方法。您不能在 char
上应用它。
你可以写
if (!Character.toLowerCase(student[i]) == Character.toLowerCase(correct[i]))
或
if (!Character.toUpperCase(student[i]) == Character.toUpperCase(correct[i]))
请用Character.toLowerCase()
将两个字符都改为小写,然后进行比较。
if (Character.toLowerCase(student[i]) != Character.toLowerCase(correct[i]))
{
incorrect++;
}
将两个字符转换为相同的大小写并进行比较
Character.toLowerCase(student[i]) == Character.toLowerCase(correct[i])
会做。
- equalsIgnoreCase() 是 String class 的一个方法,但是 student[i] 是一个 char 而不是 String。
- 您可以将字符与 (==, >, <, != ...)
- 先将char[]学生转为大写再比较
因为char
是基本类型所以没有和.methodName()
一样的方法,另外equalsIgnoreCase()
属于String
class。请更改为 Character
(包装 char
的 class)
if (Character.toLowerCase(student[i]) != Character.toLowerCase(correct[i])) {
incorrect++;
}
char 类型是原始类型 -- 不是对象 -- 因此不能取消引用 您可以在两边将字符转换为小写:
if (Character.toLowerCase(student[i])!=(Character.toLowerCase(correct[i])))
{
incorrect++;
}
字符 class 在 java.lang 包中。