Как бы я распечатал первое слово каждой строки? - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть текстовый файл, который выглядит следующим образом:

1. Bananas that are not green
2. Pudding that is not vanilla
3. Soda that is not Pepsi
4. Bread that is not stale

Я просто хочу, чтобы он печатал первое слово каждой строки НЕ ВКЛЮЧАЯ НОМЕРА!

Он должен распечатать как:

Bananas
Pudding    
Soda    
Bread

Вот мой код:

public static void main(String[] args) {
    BufferedReader reader = null;
    ArrayList <String> myFileLines = new ArrayList <String>();

    try {
        String sCurrentLine;
        reader = new BufferedReader(new 
                FileReader("/Users/FakeUsername/Desktop/GroceryList.txt"));
        while ((sCurrentLine = reader.readLine()) != null) {
            System.out.println(sCurrentLine);               
        }
    } catch (IOException e) {
        e.printStackTrace();
        System.out.print(e.getMessage());
    } finally {
        try {
            if (reader != null)reader.close();
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 02 декабря 2018

Используйте функцию split для String.Он возвращает массив строк в соответствии с символом, который мы хотим разделить строкой.В вашем случае это выглядит следующим образом.

 String sCurrentLine = new String();
 reader = new BufferedReader(new 
                FileReader("/Users/FakeUsername/Desktop/GroceryList.txt"));
 while ((sCurrentLine = reader.readLine() != null) {
    String words[] = sCurrentLine.split(" ");
    System.out.println(words[0]+" "+words[1]);
 } 
0 голосов
/ 27 декабря 2018

Java 8+ вы можете использовать метод BufferedReader lines(), чтобы сделать это очень легко:

String filename = "Your filename";
reader = new BufferedReader(new FileReader(fileName));
reader.lines()
      .map(line -> line.split("\\s+")[1])
      .forEach(System.out::println);

Вывод:

Bananas
Pudding
Soda
Bread

Это создаст Stream всех строк в BufferedReader, разделит каждую строку на пробел, а затем возьмет второй токен и напечатает его

0 голосов
/ 02 декабря 2018

Пожалуйста, попробуйте код ниже -:

outerWhileLoop: 
while ((sCurrentLine = reader.readLine()) != null) {
     //System.out.println(sCurrentLine);
     StringTokenizer st = new StringTokenizer(sCurrentLine," .");
     int cnt = 0;
     while (st.hasMoreTokens()){
        String temp = st.nextToken();
        cnt++;
        if (cnt == 2){
           System.out.println(temp);
           continue outerWhileLoop;  
        }
    }
}
...