2016-10-07 172 views
0

我想使用csv和txt文件批量創建一些批處理腳本,並且運行時出現錯誤。我評論了代碼,所以你應該能夠從這些筆記中確定我的意圖。我只在這裏寫更多的東西,因爲機器人要求我在寫文章之前不斷寫更多的解釋。一旦這個紅色的文本框消失,我會停止寫作,你可以停止閱讀。我真的希望你已經停止閱讀,因爲這會讓我感到沮喪,這是肯定的。我開始想知道我是否應該開始一個新的段落。讓我們看看是否有幫助。java.util.NoSuchElementException:No line found - Scanner/PriintWriter問題

我覺得可能使用不同的語言對此更合適,但是我的經驗大多侷限於java,我希望在繼續之前使用這種語言來獲得更好的效果。

在線程 「主」 java.util.NoSuchElementException例外:無線發現 在java.util.Scanner.nextLine(Scanner.java:1540) 在printerscriptcreator.PrinterScriptCreator.main(PrinterScriptCreator.java:29 )

public class PrinterScriptCreator { 
    public static void main(String[] args) throws FileNotFoundException { 
     File csvFile = new File("printers.csv"); 
     File txtFile = new File("xeroxTemplate.txt"); 
     Scanner csvScanner = new Scanner(csvFile); 
     csvScanner.useDelimiter(","); 
     Scanner txtScanner = new Scanner(txtFile); 

     try{ 
      while(csvScanner.hasNext()){ 
       //create file with name from first csv cell 
       File file = new File(csvScanner.next()); 
       //create FileWriter to populate the newly created file 
       FileWriter fw = new FileWriter(file); 
       //create PrintWriter to communicate with FileWriter 
       PrintWriter pw = new PrintWriter(fw); 
       //copy first 7 lines from xeroxTemplate.txt 
       for(int i=0; i<7; i++){ 
        pw.println(txtScanner.nextLine()); 
       } 
       //copy the next three cells from CSV into new file 
       for(int i=0; i<3; i++){ 
        pw.println(csvScanner.next()); 
       } 
       //copy remaining lines from TXT to the new file 
       while(txtScanner.hasNextLine()){ 
        pw.println(txtScanner.nextLine()); 
       } 
      } 
     } catch (IOException ex) { 
      System.out.printf("ERROR: %s\n", ex); 
     }  
    }  
} 
+1

Java對此非常好,不需要使用其他語言。 – SpacePrez

回答

-1

需要在while循環中創建txtScanner,以便在創建每個文件後重新創建txtScanner。否則,它會耗盡線條。

+0

這聽起來不像是正確的解決方案。你不應該這樣做。重新創建它一遍又一遍地讀取相同的行,對吧? 你的輸入數據是什麼樣的? – SpacePrez

0

我注意到,你檢查hasNext()一次,然後搶next()三次。您應該在for循環中放置一個條件hasNext()

while(csvScanner.hasNext()){ 

    ... 

     //copy the next three cells from CSV into new file 
     for(int i=0; i<3; i++){ 
      pw.println(csvScanner.next()); 
     } 
0
Exception in thread "main" java.util.NoSuchElementException: No line found 
at java.util.Scanner.nextLine(Scanner.java:1540) 
at printerscriptcreator.PrinterScriptCreator.main(PrinterScriptCreator.java:29) 

這告訴你發生了什麼。其中一個掃描儀在沒有一個掃描儀時試圖拉下一個下一個線,所以它會拋出這個異常。

它告訴你PrinterScriptCreator.java:29。我的粘貼沒有行號,但是在第29行。哪一行是?我的猜測是它的這一個:

for(int i=0; i<7; i++){ 
     pw.println(txtScanner.nextLine()); 
} 

你想拉7號線,有沒有7.因此,它拋出異常。

你可以嘗試做這樣的事情

for(int i=0; i<7; i++){ 
    if(txtScanner.hasNextLine()){ 
      pw.println(txtScanner.nextLine()); 
    } 
} 

或者你可以嘗試使用try-catch塊來處理它。無論哪種方式,檢查您的文件,並確保他們有正確的數據。

+0

需要在while循環中創建txtScanner,以便在創建每個文件後重新創建它。否則,它會耗盡線條。 – Dumpfood

+0

這聽起來不對。 – SpacePrez

相關問題