2016-09-19 22 views
0

は、テキストファイルの書き込みと受信に役立つ必要があります。 それはほとんどすべての方法で実行されているようですが、ファイルが存在しないと表示されます。その時点でファイルを作成してから書き込みを開始する必要があります。それは1つを見つけることに失敗したと言うと、それはちょうどそれ自身を終了します。私は理由を知らないが失敗します。テキストファイルの作成に関する問題?

package sorting; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.Random; 

public class Sorting { 

    private static int[] oneToFiftyThou = new int[50000]; 
    private static int[] fiftyThouToOne = new int[50000]; 
    private static int[] randomFiftyThou = new int[50000]; 

    public static void main(String[] args) { 
     if(args.length>0) { 
      if(args[0].equalsIgnoreCase("init")) { 
       // initialize the 3 files 
       // 1-50000 file1 
       // 50000-1 file2 
       // random 50000 file3 
       initializeFiles(); 
       writeFiles(); 
      } 
     } else { 
      readFilestoArray(); 
      System.out.println(""+oneToFiftyThou[0] + " - " + 
          oneToFiftyThou[oneToFiftyThou.length-1]); 
      System.out.println(""+fiftyThouToOne[0] + " - " + 
          fiftyThouToOne[fiftyThouToOne.length-1]); 
      System.out.println(""+randomFiftyThou[0] + " - " + 
          randomFiftyThou[randomFiftyThou.length-1]); 
      intInsertionSort(oneToFiftyThou); 
      intInsertionSort(fiftyThouToOne); 
      intInsertionSort(randomFiftyThou); 
     } 

    } 

    private static void initializeFiles() { 
     //Array one 
     for(int i=1; i<oneToFiftyThou.length+1; i++) { 
      oneToFiftyThou[i-1] = i; 
     } 
     //Array two 
     for(int i=50000; i>0; i--) { 
      fiftyThouToOne[fiftyThouToOne.length-(i)] = i; 
     } 
     //Array Three Random. Copy Array one into a new Array and shuffle. 
     System.arraycopy(oneToFiftyThou, 0, randomFiftyThou, 0, 
           randomFiftyThou.length); 
     Random random = new Random(); 
     for(int i=randomFiftyThou.length-1; i>0; i--) { 
      int index = random.nextInt(i+1); 
      //Swap the values 
      int value = randomFiftyThou[index]; 
      randomFiftyThou[index] = randomFiftyThou[i]; 
      randomFiftyThou[i] = value; 
     } 
    } 

    public static void writeFiles() { 

     ArrayList<int[]> arrayList = new ArrayList<int[]>(); 
     arrayList.add(oneToFiftyThou); 
     arrayList.add(fiftyThouToOne); 
     arrayList.add(randomFiftyThou); 

     int fileIter = 1; 

     for(Iterator<int[]> iter = arrayList.iterator(); 
            iter.hasNext();) { 
      int[] array = iter.next(); 
      try { 
       File file = new File("file"+fileIter+".txt"); 

       //check for file, create it if it doesn't exist 
       if(!file.exists()) { 
        file.createNewFile(); 
       } 

       FileWriter fileWriter = new FileWriter(file); 
       BufferedWriter bufferWriter = new BufferedWriter 
                    (fileWriter); 
       for(int i = 0; i<array.length; i++) { 
        bufferWriter.write(""+array[i]); 
        if(i!=array.length-1) { 
         bufferWriter.newLine(); 
        } 
       } 
       bufferWriter.close(); 
       fileIter++; 
      }catch(IOException ioe) { 
       ioe.printStackTrace(); 
       System.exit(-1); 
      } 
     } 
    } 

    public static void readFilestoArray() { 
     ArrayList<int[]> arrayList = new ArrayList<int[]>(); 
     arrayList.add(oneToFiftyThou); 
     arrayList.add(fiftyThouToOne); 
     arrayList.add(randomFiftyThou); 

     int fileIter = 1; 

     for(Iterator<int[]> iter = arrayList.iterator(); 
            iter.hasNext();) { 
      int[] array = iter.next(); 
      try { 
       File file = new File("file"+fileIter+".txt"); 

       //check for file, exit with error if file doesn't exist 
       if(!file.exists()) { 
        System.out.println("file doesn't exist " 
                  + file.getName()); 
        System.exit(-1); 
       } 

       FileReader fileReader = new FileReader(file); 
       BufferedReader bufferReader = new BufferedReader 
                    (fileReader); 
       for(int i = 0; i<array.length; i++) { 
        array[i] = Integer.parseInt 
                (bufferReader.readLine()); 
       } 
       bufferReader.close(); 
       fileIter++; 
      }catch(IOException ioe) { 
       ioe.printStackTrace(); 
       System.exit(-1); 
      } 
     } 
    } 

    private static void intInsertionSort(int[] intArray) { 
     int comparisonCount = 0; 
     long startTime = System.currentTimeMillis(); 
     for(int i=1; i<intArray.length;i++) { 
      int tempValue = intArray[i]; 
      int j = 0; 
      for(j=i-1; j>=0 && tempValue<intArray[j];j--){ 
       comparisonCount++; 
       intArray[j+1] = intArray[j]; 
      } 
      intArray[j+1] = tempValue; 
     } 
     long endTime=System.currentTimeMillis(); 
     System.out.println("Comparison Count = " + comparisonCount 
          + " running time (in millis) = " + 
            (endTime-startTime)); 
    } 
} 
+0

'readFilestoArray'メソッドの' if(!file.exists()) '条件が疑わしいと思われます –

+0

あなたはこれまでこの問題を解決しようとしましたか? https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –

答えて

0

まあ、私の作品です。そのようなコンソールでそれを実行します。

java Sorting init

そして、それを別の時間に実行:

java Sorting

完璧に動作

を。 Eclipseにいる場合は、構成>引数を実行してinitと入力してください。

誰かがinitパラメータでプログラムを呼び出したかどうかを確認するメインメソッドにポイントがあります。そうであれば、それらのファイルを作成して書き込みます。あなたはおそらくinitなしで起動しており、ファイルがまだ存在しないため、動作しません。

関連する問題