2

私はプログラミングの割り当てを行っていますが、基本的にはtxtファイルから読み取り、そこにあるすべてのものを異なる配列に並べ替えて、cmdプロンプトにすべてをきちんと表示し、ものを削除できるようにする必要があります。

h Vito 123
d Michael 234 Heart
s Vincent 345 Brain Y
n Sonny 456 6
a Luca 567 Business
r Tom 678 Talking Y
j Anthony 789 Maintenance N
d Nicos 891 Bone
n Vicky 911 7

最初の列は employeeRole (従業員、医師) である必要があります。2 番目の列は employeeName です。3 番目の列は employeeNumber であり、そのうちのいくつかには 4 番目の列があります (数字の場合は患者の数です。Y は掃除や電話への応答などのためのものです)。

したがって、私の思考プロセスは、各列を独自の配列に入れ、そのように書き出すことでした。各行を独自の配列に入れることができました

public class ReadingFile {
 // String test;
  // char[] employeeRole = new char[9];
   String[] employeeRole = new String[9];
   String[] employeeName = new String[9], specialty;
   String[] wholeLine = new String[9];
  // String word;

   int[] employeeNum = new int[9];
   int r, n, l, num;
   public void Reader()
    {
    Scanner inputStream = null;
    Scanner inputStream2 = null;
    Scanner inputStream4 = null;
    try
    {
        BufferedReader inputStream3 =
                    new BufferedReader(new FileReader("data.txt"));
        inputStream = new Scanner(new FileInputStream("data.txt"));
        inputStream =
                    new Scanner(new FileInputStream("data.txt"));
        inputStream2 =
                    new Scanner(new FileInputStream("data.txt"));
                    inputStream4 =
                    new Scanner(new FileInputStream("data.txt"));
                    System.out.println("Yeah");

    }
    catch(FileNotFoundException e){
        System.out.println("File Not found");
        System.exit(1);
    }
for (l=0; l<9; l++)
{
    wholeLine[l] = inputStream2.nextLine();

    System.out.println(wholeLine[l]);
}

しかし、そこから何をすればよいか分からなかった。分割を行うと、配列が配列に入れられますか? つまり、各行を配列に入れ、次に各単語を配列に入れますか?

だから私は何か他のことを試しました.1に等しくない長さのものはemployeeNumになりますが、そこにはNとYと患者の数がありました.

    for(r=0; r<9; r++) //role
    {
       String next = inputStream4.next();
       while( next.length() != 1)
       {
           next = inputStream4.next();
       }

        employeeRole[r] = next;

       System.out.println(employeeRole[r]);
    }

私も試しました

for (r=0; r<9; r++)
{
    employeeRole[r] = wholeLine[r].substring(wholeLine[r].indexOf(1));
    //inputStream.nextLine();
    System.out.println(employeeRole[r]);
}

私はそれについて正しい方法で進んでいるかどうかわかりませんか?実際よりも難しくしている場合は?または、これを行う簡単な方法がある場合。しかし、すべてが完了した後、出力は基本的に言うことができるはずです

Doctors: 2
Name: Michael  Employee Number: 234 Specialty: Heart
Name: Nicos     Employee Number: 891 Specialty: Bone

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

6

ファイルを読み取るために 4 つのストリームを開く必要はありません (「列ごとに 1 つ」開きたいと思っていたと思いますが、そうすべきではありません)。

次に、文字列をスペース (" ") で分割して、必要に応じて列を (行ごとに個別に) 提供することができます。

コード例:

    BufferedReader br = null;
    String[] characters = new String[1024];//just an example - you have to initialize it to be big enough to hold all the lines!

    try {

        String sCurrentLine;
        br = new BufferedReader(new FileReader("data.txt"));

        int i=0;
        while ((sCurrentLine = br.readLine()) != null) {
            String[] arr = sCurrentLine.split(" ");
            //for the first line it'll print
            System.out.println("arr[0] = " + arr[0]); // h
            System.out.println("arr[1] = " + arr[1]); // Vito
            System.out.println("arr[2] = " + arr[2]); // 123
            if(arr.length == 4){
                System.out.println("arr[3] = " + arr[3]);
            }

            //Now if you want to enter them into separate arrays
            characters[i] = arr[0];
            // and you can do the same with
            // names[1] = arr[1]
            //etc
            i++;
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
于 2013-09-22T23:55:55.590 に答える