字符数组比较忽略大小写

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])

会做。

  1. equalsIgnoreCase() 是 String class 的一个方法,但是 student[i] 是一个 char 而不是 String。
  2. 您可以将字符与 (==, >, <, != ...)
  3. 先将char[]学生转为大写再比较

因为char是基本类型所以没有和.methodName()一样的方法,另外equalsIgnoreCase()属于Stringclass。请更改为 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 包中。