在Java中将文本文件读入char [] []数组

时间:2016-01-21 23:44:04

标签: java arrays

我正在尝试从文本文件中填充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();

2 个答案:

答案 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);
}