将数据文件输入字符串数组

时间:2014-05-02 22:47:34

标签: java arrays string

我正在尝试学习如何从.dat文件输入并将其迭代到字符串数组中。从我到目前为止所读到的内容来看,这是可能的。

目前我正尝试使用我的一个字符串变量来测试它是否正在向数组写入任何内容。

我真的很难理解如何让它发挥作用。当我编译时,我收到一个错误,即StudentID字符串变量从未被初始化。

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

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

        String StudentID;
        String answers;

        while(testanswers.hasNextLine())
        {
              StudentID = testanswers.next();
              answers = testanswers.next();
        }

        String[][] answerArray = new String[7][2];

        for(int row = 0; col < answerArray.length; col++)
        {
             for(int col = 0; col < answerArray.length; col++)
             {
                  answerArray[row][col] = StudentID:
                  System.out.print(answerArray[row][col]);
             }
        }


   }

}

.dat文件如下所示:

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

我的逻辑在这里都错了吗?

3 个答案:

答案 0 :(得分:1)

在Java中使用之前,本地变量需要显式初始化。正如@ajb在下面的评论中提到的,while循环可能永远不会运行(因为文件可能是空的),所以在初始化之前有可能使用。

   String StudentID = "";
   String answers = "";

此外,您需要决定是逐行阅读还是逐字阅读。请勿将hasNextLine()next()混合。

您的代码存在各种其他语法问题。这是一个工作版本。

import java.util.*;
import java.io.*;

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

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

        String StudentID;
        String answers;
        // Read 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();
        }


   }

}

答案 1 :(得分:1)

在while循环中,每次都会覆盖StudentID的值。循环之后将只有最后一个值。 因此,在读取文件期间,即在while循环内,您应该尝试将值存储在数组中。

答案 2 :(得分:0)

你的代码不好,在while循环之后,你只有一个StudentID值,最后一个。为什么用7和2创建answerArray变量?