2014-11-16 120 views
0

我需要閱讀的文本文件看起來像這樣如何讀取文件並按每行分割文本?

8 7 
~~~~~~~ 
~~~~~~~ 
B~~~~~~ 
~~~~~~~ 
~~~~B~~ 
~~~~B~~ 
~~~~~~B 
~~~~~~~ 
~~~~~~~ 

我的程序再造一個戰艦遊戲。我需要接受值8和7,但僅從第二行開始打印。我應該使用string.split(我相信)。我只需要打印〜和B的行。我有代碼已經閱讀文件,我只是不確定如何通過換行符分割文件。

File file = new File(args[1]); 
    try 
     { 
     Scanner sc = new Scanner(file); 
     while (sc.hasNextLine()) 
      { 
      String themap = sc.nextLine();   
      System.out.println(themap); 
      } 
     sc.close(); 
     } 
    catch (Exception e) 
     { 
     System.out.println("ERROR: File does not exist"); 
     } 

回答

1

您已經在使用sc.nextLine()逐行讀取它。它將逐行讀取文件。沒有必要使用split來獲取每一行。爲了證明改變你的println語句來添加一些你知道不在文件中的行。

System.out.println("Yaya " + themap); 

如果你看到丫丫在每一行的前面,當你運行你的程序,那麼你知道你在一行行讀它,並themap點,一條線出在每個循環過程的文件。

之後,您只需要在該行內搜索以查找B和8並將其提取到另一個數據結構中。有很多方法可以做到這一點,但檢查字符串API的方法,可以幫助。

+0

對,這很有道理。所以我不需要分割它,我只需要從第二行打印。我如何只訪問這些行? –

+0

所以不知道你的數據有多少我不得不猜測一下,但是在第二次看起來你的第一行似乎包含了一些關於你的程序的重要信息。 8 7似乎表明董事會有多少行和幾列。您可能需要保留這些信息。所以最簡單的方法是讀取循環之外的第一行,然後從閱讀中讀取板上的行。但是,您可能需要解析出這兩個第一個數字並保留它們。 – chubbsondubs

0

使用的Java 8 PathsPathFiles.readAllLines,和流(輸入是在/tmp/layout.txt):

package stackoverflow; 

import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.util.List; 

public class StackOverflow { 

    public static void main(String[] args) throws IOException { 
     Path layout = Paths.get("/tmp", "layout.txt"); 
     List<String> lines = Files.readAllLines(layout); 
     lines.remove(0); // Don't print the first line. 
     lines.stream().forEach(System.out::println); 
    } 
} 

如果你不能使用Java 8中,使用

for (String line : lines) { 
    System.out.println(line); 
} 

,而不是

lines.stream().forEach(System.out::println);