java - 不兼容的数据类型错误

标签 java arrays string

我正在“尝试”创建一种方法,该方法将获取我的字符串数组并将其与我从数据文件导入的答案键进行比较。每次编译时,我都会收到此不兼容的数据类型错误,它表示:

找到:java.lang.String 必需:java.lang.String[][]

难道我没有这么做吗? 我没有运气在这里和谷歌上寻找解决方案。它们似乎与我想要完成的任务无关。

import java.util.*;  // Allows for the input of a scanner method.
import java.io.*;    // Allows for the inputting and outputting of a data file.
import java.lang.*;  // Allows for the use of String Methods.
//////////////////////////////////////////////////////////////////////////////////////

public class TESTY
{
static Scanner testanswers;
static PrintWriter testresults;

public static void main(String[] args) throws IOException
{
    testanswers = new Scanner(new FileReader("TestInput.dat"));
    testresults = new PrintWriter("TestOutput.dat");

    String StudentID;
    String answers;
    // Reads first two lines first to know how many records there are.
    String answerKey = testanswers.nextLine();
    int count = Integer.parseInt(testanswers.nextLine());

    // Allocate the array for the size needed.
    String[][] answerArray = new String[count][];

    for (int i = 0; i < count; i++)
    {
        String line = testanswers.nextLine();
        answerArray[i] = line.split(" ", 2);
    }

    for(int row = 0; row < answerArray.length; row++)
    {
        for(int col = 0; col < answerArray[row].length; col++)
        {
            System.out.print(answerArray[row][col] + " ");
        }
        System.out.println();
    }   
    gradeData(answerArray, answerKey);



    testanswers.close();
    testresults.close();

}
///////////////////////////////////////////////////////////
//Method: gradeData
//Description: This method will grade testanswers showing 
//what was missed, skipped, letter grade, and percentage.
///////////////////////////////////////////////////////////
public static double gradeData(String[][] answerArray, String answerKey)
{   

    String key;
    double Points = 0;
    StringBuilder[] wrongAnswers = new StringBuilder[answerArray.length];

    for(int rowIndex = 0; rowIndex < answerArray.length; rowIndex++)
    {
        String studAnswers[][] = answerArray[rowIndex][1].replace(" ", "S");
        for(int charIndex = 0; charIndex < studAnswers[rowIndex][1].length; charIndex++)
        {
            if(studAnswers[rowIndex][1].charAt(charIndex).equals(key.charAt(charIndex)))
            {
                Points += 2;
            }
            if(!studAnswers[rowIndex][1].charAt(charIndex).equals('S'))
            {
                Points --;
            }
            else
            {
                wrongAnswers.setcharAt(charIndex, 'X');
            }
        }
    }
    return Points;


}

为了更好地了解我在这里所做的事情,我的 .dat 文件:

TFFTFFTTTTFFTFTFTFTT
5
ABC54301 TFTFTFTT TFTFTFFTTFT
SJU12874 TTTFFTFFFTFTFFTTFTTF
KSPWFG47 FT  FT  FTFTFFTTFFTF
PAR38501 FFFFFFFFFFFFFFFFFFFF
MCY19507 TTTT TTTT TTTT TT TT

最佳答案

例如这个语句,

String studAnswers[][] = answerArray[rowIndex][1].replace(" ", "S");

编译错误

Type mismatch: cannot convert from String to String[][]

因为

answerArray[rowIndex][1].replace("", "S"); 返回一个 String

  • answerArray 是一个二维 String 数组。
  • answerArray[rowIndex][1] 获取 数组中的一个元素,它是一个字符串
  • answerArray[rowIndex][1].replace... 替换其中的字符
    String 与另一个字符,最终成为另一个 String (与 被替换的字符)

您正在尝试将其分配给 String 数组。

此外,您不能对基元(intchar...)使用equals。您需要使用==进行比较。

关于java - 不兼容的数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23503569/

相关文章:

java - 在android中捕获图像时出现管道错误

JavaScript/Node.JS 将对象转换为数组

java - Java 中是否可以定义任意高度嵌套的数组?

python - 删除 json 数组转换为元组后出现的逗号

ruby - 为什么我不能连接两个字符串并将它们分配给一个符号?

string - Thymeleaf 为每个字符串替换一个子字符串

java - Spring 国际化可以通过 xml 配置进行,但不能通过 Java 配置进行

java - JDBC 使 Java 崩溃

java - SpringJUnit4ClassRunner - 静态访问EntityManager(Factory)

c - 打印文件每行的 m 到 n 列