我正在"尝试"制作一种方法,该方法将获取我的字符串数组并将其与我从数据文件导入的答案键进行比较。 每次编译时,我都会收到这个不兼容的数据类型错误,它说:
找到: 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
是一个 2DString
阵列。 -
answerArray[rowIndex][1]
得到数组中的元素,它是一个字符串 -
answerArray[rowIndex][1].replace...
替换其中
的字符 与另一个角色String
,最终成为另一个String
(与替换字符(
您正在尝试将其分配给String
数组。
此外,您不能在原语上使用equals
(int
,char
...(。您需要使用==
进行比较。
String studAnswers[][] = answerArray[rowIndex][1].replace(" ", "S");
在这里,studAnswers
被声明为字符串数组的数组,并使用 String 对其进行初始化。实际上,answerArray
是一个字符串数组数组,因此answerArray[rowIndex][1]
是一个字符串。您将此字符串中的每个空格替换为 S,这将返回另一个字符串。
这说不通。