0

この形式のファイルがあるとします。

8 15

5

8

16

89

ファイルの読み取りにScannerクラスを使用しています。たとえば、これらの値を2次元配列に格納したい

y [0] [0] = 8、y [0] [1] = 15、y [1] [0] = 5、y [2] [0]=8。

このような値を保存することはできません。出力を取得しています

y [0] [0] = 8、y [0] [1] = 15、y [0] [3] = 5、y [0] [4]=8。

ファイル内の行末(EOL)を見つけて、2次元配列に自動的に格納する方法を知りたいです。

public class gjd {

public static void main(String[] args) {

           java.io.File test2 = new java.io.File("c.txt");

           try
           {
               Scanner input = new Scanner(test2);

               while (input.hasNextLine()){
                   int y[][]=new int[10][10];
                  for(int i=0;i<test2.length();i++)
                  {
                      for(int o=0;o<test2.length();o++)
                   {
                      y[i][o]=input.nextInt();


                      System.out.println(y[i][o]);


                   }

                  }

               }
           }  catch (Exception e){
            System.out.println("could not find file");
           }

        }
}
4

3 に答える 3

1

このコードを試してください...

           java.io.File test2 = new java.io.File("C:/c.txt");
           Scanner input = new Scanner(test2);
           String arr[][]=new String[5][5];
           int i=0,j=0;
           while(input.hasNext())
           {
               String val=input.nextLine();
               j=0;
               if(val.contains(" "))
               {
                   String str[]=val.split(" ");
                   int cn=str.length;
                   while(cn>0)
                   {
                       arr[i][j]=str[j];
                       cn--;
                       j++;
                   }
               }
               else
                   arr[i][j]=val;
               i++;
           }

            for(int i1=0;i1<5;i1++)
            {
                 for(int j1=0;j1<5;j1++)
                     if(arr[i1][j1] != null)
                     System.out.print(arr[i1][j1]); 
                 System.out.println();
            }
于 2013-02-26T09:17:58.283 に答える
0

行を見つけるたびに配列をインスタンス化するべきではありません。

int y[][] = new int[10][10];whileループに含めるべきではありません。

そして、ファイルの長さで何をしようとしていますtest2.length()か?

于 2013-02-26T08:54:45.200 に答える
0

最初のスキャナーから解析したラインで動作する2番目のスキャナーを使用できます

次に、行に別のintがあるかどうかを確認し、必要に応じてデフォルト値を設定します。

于 2013-02-26T09:21:36.853 に答える