2011-09-28 3 views
0

上記の作業はどのようにすればいいですか?私がやっていることは、ページを別の配列に分けることですが、ひどく失敗しました。リクエストによってテキストファイルを読み込み、7行ごとに「ページ」を作成してください

コード(仕事にしても閉じない)

int a = 1; int b = 5; 
    File folder = new File("c:/files"); 
    File[] listOfFiles = folder.listFiles(); 
    String[] page1 = new String[7]; 
    String[] page2 = new String[7]; 
    String[] page3 = new String[7]; 
    String[] page4 = new String[7]; 
    String[] page5 = new String[7]; 
    String[] page6 = new String[7]; 
    int c = 0; 
    for (int i = 0;i<listOfFiles.length; i++) 
    { 
     if(i>=0 && i <= 7) 
     { 
      page1[i] = listOfFiles[i].getName(); 
     } 
     else if(i>=8 && i<=15) 
     { 
      page2[i] = listOfFiles[i].getName(); 
     } 
     else if(i>=16 && i<=23) 
     { 
      page3[i] = listOfFiles[i].getName(); 
     } 
     else if(i>=24 && i<=31) 
     { 
      page4[i] = listOfFiles[i].getName(); 
     } 
     else if(i>=32 && i<=39) 
     { 
      page5[i] = listOfFiles[i].getName(); 
     } 
    } 
+0

を使用して投稿既存のコード – michael667

+0

が、私はそれを知っていたコード – xxMatthewo

答えて

0

あなたのコードは動作しないことができる、あなたがpage2[i] = xxxを行う際に、iという名前の変数が0と6の間の値をとり、その必要があるため、値は8から15になります。他のページでも同じです。最後に使用したインデックスが7で、0〜6の範囲にないため、page1も失敗します。私はあなたのアイデアを得る願ってい

for (int i=0; i<listOfFiles.length; i++) 
{ 
    if(i>=0 && i<7) 
    { 
     page1[i] = listOfFiles[i].getName(); 
    } 
    else if(i>=7 && i<15) 
    { 
     page2[i-7] = listOfFiles[i].getName(); 
    } 
    else if(i>=16 && i<23) 
    { 
     page3[i-16] = listOfFiles[i].getName(); 
    } 
    ... 
} 

のようなものを試してみてください。このようにしても、コードは維持するのが少し醜いので、1つの二次元配列を定義する方法と、モジュラス(%)演算子を使用してより簡単な方法でより少ないコードでアクセスする方法について考える必要があります。

次のコードは、テストされていないが、私はそれがあなたをガイド願っています:

int NUM_PAGES = 7; 
File folder = new File("c:/files"); 
File[] listOfFiles = folder.listFiles(); 

String[][] pages = new String[NUM_PAGES][listOfFiles.length/NUMPAGES]; 
for (int i=0; i<listOfFiles.length; i++) { 
    int currentPage = i % 7; 
    int currentPosition = pages[currentPage].length; 
    pages[currentPage][currentPosition] = listOfFiles[i].getName(); 
} 

ます。また、さらに多くのコードを単純化するのJavaコレクションを使用することができます。

+0

を投稿。それが私がそれを行う新しい方法を求めた理由です。私はエラーを認識し、私は別の方法が必要であることを知っていた。 – xxMatthewo

+0

いくつかのコードを追加するように編集しました(おそらくバグですが、あなたはそのアイデアを得るでしょう) –

関連する問題