Java 比较两个字符数组并创建不匹配值索引的Int数组

Java 比较两个字符数组并创建不匹配值索引的Int数组,java,Java,我有两个char数组。一个是考试的正确答案,char[]answers,另一个是char[]studentAnswers。我想比较这两个数组,如果有不正确的答案,我想存储他们出错的问题 questionsMissed = i questionsMissed = studentAnswers[i] public int[] questionsMissed(char[] studentAnswers) { for(int i = 0; i<studentAnswers.length; i

我有两个
char
数组。一个是考试的正确答案,
char[]answers
,另一个是
char[]studentAnswers
。我想比较这两个数组,如果有不正确的答案,我想存储他们出错的问题

questionsMissed = i
questionsMissed = studentAnswers[i]

public int[] questionsMissed(char[] studentAnswers)
{
  for(int i = 0; i<studentAnswers.length; i++){
    if(studentAnswers[i] != answers[i]){
      questionsMissed =;
    }
  }
  return questionsMissed;
}
questionsMissed=i
问题M=学生回答[i]
公共int[]问题(字符[]学生回答)
{

对于(int i=0;i您可能需要一个
整型
列表来添加索引,然后将其转换为
int
数组

public int[] questionsMissed(char[] studentAnswers) {

List<Integer> list = new ArrayList<>();

for(int i = 0; i<studentAnswers.length; i++){
   if(studentAnswers[i] != answers[i]){
      list.add(i);
     }
   }
 return list.stream().mapToInt(Integer::intValue).toArray();
}
如果使用java-7,则需要再次迭代该列表

public int[] questionsMissed(char[] studentAnswers) {

List<Integer> list = new ArrayList<>();

for(int i = 0; i<studentAnswers.length; i++){
   if(studentAnswers[i] != answers[i]){
      list.add(i);
     }
   }
    int[] arr = new int[list.size()];

    for(int i=0; i<arr.length; i++) {
        arr[i]=list.get(i);
    }
  return arr;
}
public int[]问题(char[]学生回答){
列表=新的ArrayList();

对于(int i=0;i而言,如果使用列表附加索引并在末尾返回
int
数组,则更容易:

public int[] questionsMissed(char[] studentAnswers)
{
  List<Integer> questionsMissed  = new ArrayList<>();
  for(int i = 0; i<studentAnswers.length; i++){
    if(studentAnswers[i] != answers[i]){
      questionsMissed.add(i);
    }
  }
  return questionsMissed.toArray();
}
public int[]问题(char[]学生回答)
{
List questionsMissed=新建ArrayList();

对于(int i=0;然后简单地分配一个与问题数量相同大小的新数组。如果他们答错了问题,你需要做的就是在适当的插槽中为
i
的值存储一个1,如果他们答对了问题,则存储一个0。我还没有学习java-8流,因为在我的课程中,我们还没有做到这一点。你能提供一些答案吗当我运行时,它引用了存储它的内存,而不是错误问题的索引。这是教科书要求的。questionsMissed。一个整数数组,包含学生错过的问题的问题编号。对不起,我没有得到你的问题@RossList.toArray()返回对象,但不是
int
数组
public int[] questionsMissed(char[] studentAnswers)
{
  List<Integer> questionsMissed  = new ArrayList<>();
  for(int i = 0; i<studentAnswers.length; i++){
    if(studentAnswers[i] != answers[i]){
      questionsMissed.add(i);
    }
  }
  return questionsMissed.toArray();
}