我正在尝试从文本文件中填充char [] []数组,我似乎无法弄清楚如何做到这一点。我试过使用.toCharArray()但似乎没有用。如果您能够提供有关如何使这项工作变得非常棒的任何见解!
String filename = "ArrayHW2.txt";
int numTests = 6;
char[][] testAnswers = new char[50][5];
char[] key = new char[4];
Scanner input = null;
try
{
input = new Scanner(new File(filename));
}
catch(FileNotFoundException e)
{
System.out.println("Error Opening File");
System.exit(1);
}
for(int row = 0; row < testAnswers.length; row++)
{
for(int col = 0; col < testAnswers[row].length; col++)
{
testAnswers[row][col] = input.next().toCharArray();
}
}
input.close();
答案 0 :(得分:1)
基本问题是您正在尝试将字符数组分配给用于保存字符的内容。您可能会认为char[]
类型为将位置存储在记忆字符的内存中,并将char
类型作为字符本身。
当您在toCharArray()
上致电String
时,返回类型为char[]
。看起来您希望此数组具有单个字符,例如多项选择测试的A,B,C或D.您可以使用类似...toCharArray()[0]
的内容获取该数组的第一个(也是唯一的?)字符,但这很浪费,因为创建了一个新数组,并且从源字符串中将字符复制到其中。在getCharAt()
上直接使用String
方法更为简单。
String filename = "ArrayHW2.txt";
char[][] testAnswers = new char[50][5];
try (Scanner input = new Scanner(Paths.get(filename))) {
for(int row = 0; row < testAnswers.length; row++) {
for(int col = 0; col < testAnswers[row].length; col++) {
String token = r.next();
if (token.length() != 1)
throw new IllegalArgumentException("Answers must be one character");
testAnswers[row][col] = token.charAt(0);
}
}
} catch (IOException ex) {
System.err.println("Error reading file: " + ex.getMessage());
System.exit(1);
}
答案 1 :(得分:0)
String filename = "ArrayHW2.txt";
int numTests = 6;
char[][] testAnswers = new char[50][5];
//char[] key = new char[4];
Scanner input = null;
try
{
input = new Scanner(new File(filename));
}
catch(FileNotFoundException e)
{
System.out.println("Error Opening File");
System.exit(1);
}
int counter = 0;
while(scanner.hasNext())
{
copyString(testAnswers[counter], scanner.nextLine());
}
input.close();
它已经有一段时间我没有java中的代码,我不确定方法,但认为它是一个伪代码。 你可以使用这个副本:
void copyString(char[] arr, String x)
{
int size = x.length();
for (int i=0; i<size; i++){
arr[i] = x.CharAt(i);
}