2016-07-07 61 views
-2

我很抱歉被如此菜鳥使用Java,讀取和寫入TXT使用掃描儀的Java

我有以下問題:

我想訪問8 txt文件,並用相同的點創建數組從每個文件; (1,1)= file1(point(1,1),file2(point(1,1),file3(point(1,1),file4(point(1,1))) ,file5(點(1,1),file6(點(1,1),file7(點(1,1),file8(點(1,1)]

所以然後,

右現在我遇到以下問題......首先,代碼不能訪問文件中的所有時間0.0,0.0,0.0,... 0.0。其次,我不知道如何創建輸出(x,y).txt

每個文件輸入都有1.050.622個點......所以需要創建1.050.622個輸出......

有人可以幫助我嗎?

這是我寫的代碼:

package filtros; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.Scanner; 

public class Main { 

private static final String INPUT_FILE = ""; 
private static final String OUTPUT_FILE = ""; 

public static void main(String[] args) { 
    int n=1050622; 
    float datos[][] = new float[n][8]; 




    Scanner sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8; 
    try { 
     sc1 = new Scanner(new File("C:\\Users\\Netbook\\f1.txt")); 
     sc2 = new Scanner(new File("C:\\Users\\Netbook\\f2.txt")); 
     sc3 = new Scanner(new File("C:\\Users\\Netbook\\f3.txt")); 
     sc4 = new Scanner(new File("C:\\Users\\Netbook\\f4.txt")); 
     sc5 = new Scanner(new File("C:\\Users\\Netbook\\f5.txt")); 
     sc6 = new Scanner(new File("C:\\Users\\Netbook\\f6.txt")); 
     sc7 = new Scanner(new File("C:\\Users\\Netbook\\f7.txt")); 
     sc8 = new Scanner(new File("C:\\Users\\Netbook\\f8.txt")); 



     for(int i=0;i<n;i++){ 

      while (sc1.hasNextFloat()) { 
       datos[i][0] = sc1.nextFloat(); 

      } 

      while (sc2.hasNextFloat()) { 
       datos[i][1] = sc2.nextFloat(); 

      } 

      while (sc3.hasNextFloat()) { 
       datos[i][2] = sc3.nextFloat(); 

      } 

      while (sc4.hasNextFloat()) { 
       datos[i][3] = sc4.nextFloat();     
      } 

      while (sc5.hasNextFloat()) { 
       datos[i][4] = sc5.nextFloat();     
      } 

      while (sc6.hasNextFloat()) { 
       datos[i][5] = sc6.nextFloat();     
      } 

      while (sc7.hasNextFloat()) { 
       datos[i][6] = sc7.nextFloat();     
      } 

      while (sc8.hasNextFloat()) { 
       datos[i][7] = sc8.nextFloat();     
      } 

     } 

     for(int i=0;i<n;i++){ 
      System.out.print("espectro "+ i+ " "); 
      for(int j=0;j<8;j++){ 
       System.out.print(datos[i][j] + " "); 
       //float datos[i] = new FileWriter("C:\\Users\\Netbook\\Exits"); 
      } 
      System.out.println(); 
     } 


    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


} 

}

+1

請寫一個關於您得到的具體錯誤的具體問題,指向您需要幫助的代碼中的確切代碼行。 –

+0

首先,您要將所有'while(sc#.hasNextFloat())'改爲'if(sc#.hasNextFloat())'。因爲現在你在for循環的第一次迭代期間讀取文件中的所有浮點數,因此0.0(我認爲)的結果。 –

+0

我在任何地方都需要幫助我認爲XD ...所以如果有人能寫出更好的解決方案我會很高興<3 –

回答

1

我想你背後的原因,讓 「0.0」 所有的時間就是你使用

while (sc1.hasNextFloat()) 

它讓你在for循環的第一次迭代期間讀取每個文件中的所有浮點數。如果您使用if而不是while,則應該獲得所需的行爲。

至於寫作,我建議使用FileWriter,代碼會看起來像這樣的文件:

FileWriter fw; 
for(int i=0;i<n;i++){ 
    fw = new FileWriter(new File("C:\\Users\\Netbook\\Exits\\output" + i + ".txt")); 
    for(int j=0;j<8;j++){ 
     fw.write(datos[i][j] + " "); 
    } 
    fw.flush(); 
    fw.close(); 
} 

另外,記得要加一個catch語句可能IOException