2016-01-16 118 views
1

我有一個包含三行代碼的文本文件。 也就是,如何從Java中的文本文件打印多行?

你好。 我可以幫你嗎? 今天我能爲您做些什麼?

我試圖打印第一行,它的工作。現在我想打印控制檯中的其餘行,但它只顯示第一行這樣的4次。

你好。 你好。 你好。 你好。

下面是我試圖運行的代碼,並且該文件位於根文件夾中。

public class Test 
{ 

    public static void main(String[] args) 
    { 
     int counter = 0; 
     /*open the file */ 
     BufferedReader reader = null; 

     String greeting = null; 
     int rand; 
     File file = new File("Greetings.txt"); 

     try 
     { 
      reader = new BufferedReader(new FileReader(file)); 

      /*read the file*/ 
      String greetingPicker = null; 

      /*single greeting*/ 
      /*greeting = greetingPicker;*/ 
      List<String> listOfGreetings = new ArrayList<String>(); 
      while ((greetingPicker = reader.readLine()) != null) 
      { 
       listOfGreetings.add(greetingPicker); 
      } 
      reader.close(); 

      rand = (int) Math.random() * (listOfGreetings.size()) + 1; 
      greeting = listOfGreetings.get(rand - 1); 

      for (int i = 0; i < listOfGreetings.size(); i++) 
      { 
       System.out.println(listOfGreetings.get(counter)); 
      } 
     } catch (Exception e) 
     { 
      System.out.println("File cannot be found!!"); 
     } 

    } 

} 

回答

2

你不需要你的櫃檯,使用我! ;)

for(int i=0; i < listOfGreetings.size();i++){ 
    System.out.println(listOfGreetings.get(i)); 
} 
4

你得到了錯誤的指標值:你錯在循環使用counter,而不是i。改變這種

for(int i=0; i < listOfGreetings.size(); i++){ 
    System.out.println(listOfGreetings.get(counter)); 
} 

這樣:

for(int i=0; i < listOfGreetings.size(); i++){ 
    System.out.println(listOfGreetings.get(i)); 
} 

順便問一下,你正在使用Math.random(),它被立即轉換爲int,因爲你忘了添加正確的括號,所以改變這種

rand = (int) Math.random() * (listOfGreetings.size()) + 1; 

對此:

rand = (int) (Math.random() * (listOfGreetings.size()) + 1); 
+0

Thanks.This工作。 –

1

你不需要使用計數器,並且在這樣放在最後收盤:

for(int i=0; i < listOfGreetings.size();i++){ 

     System.out.println(listOfGreetings.get(i)); 

    } 
    reader.close(); 
2

只要改變

System.out.println(listOfGreetings.get(counter));

通過

System.out.println(listOfGreetings.get(i));

你忘了更改計數器。

0

嘗試使用下面的塊。它更簡單,完美地工作。

import java.util.Scanner; 
import java.io.File; 
import java.io.FileNotFoundException; 


public class FileReader{ 

    public static void main(String[] args){ 

     //define file path 
     String stringFileToRead = "Greetings.txt"; 

     //the file 
     File stringFile = new File(stringFileToRead); 

     //Scanner object to take input from the file 
     Scanner fileToRead = null; 

     try{ 
     //Read the file 
     fileToRead = new Scanner(stringFile); 

     } 
     //catch exception 
     catch (Exception e){ 
     System.out.println("Unable to open file."); 
     System.exit(0); 
     } 

     //print the content of the file 
     System.out.println("The file contains the following contents:\n"); 
     int lineNum = 1; 
     while(fileToRead.hasNextLine()){ 
     String line = fileToRead.nextLine(); 
     System.out.println("Line "+lineNum+": "+line); 
     lineNum++; 
     } 

    } 

} 
0

的 「計數器」 變量這裏不被遞增:

for(int i=0; i < listOfGreetings.size();i++){ 

    System.out.println(listOfGreetings.get(counter)); 

} 

你應該更改爲 「我」 而不是:

for(int i=0; i < listOfGreetings.size();i++){ 

    System.out.println(listOfGreetings.get(i)); 

} 
相關問題