你如何阅读文本文件并将每4个单词全部打印到控制台窗口?

时间:2016-04-08 14:26:34

标签: java

我尝试在控制台中用大写字母打印我的文本文件的每4个单词,但是此代码打印了我的所有文件资本而我找不到原因?

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

public class FileText {
    public static void main(String[] args) {
        Scanner sc = null;
        try {
            sc = new Scanner(new File("players.txt"));
            int count = 0;
            while (sc.hasNext()) {
                String line = sc.next();
                String[] elements = line.split(" ");

                for (int i = 0; i < elements.length; i++) {
                    if (i/3 == 0){
                        System.out.println(elements[i].toUpperCase());
                    }
                    else {
                        System.out.println(elements[i]);
                    }
                }
            }
            System.out.println("The number of capital letters are: " + count);
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        finally {
            sc.close();
        }
    }
}

2 个答案:

答案 0 :(得分:5)

有两件事情出错:

A) 第String[] elements = line.split(" ");行不会在每个单词中拆分该行。您使用Scanner的方式已将它们分开(因为Scanner的默认分隔符是空格),这意味着您的line变量始终只包含一个单词。

sc.useDelimeter("\n");循环之前使用while(sc.hasNext())解决此问题。

b)中 取代

if(i/3 == 0){

if(i%4 == 0){ //modulo division

答案 1 :(得分:0)

这里是完整的代码:

    public static void main(String[] args) {
    Scanner sc = null;
    try {
        sc = new Scanner(new File("players.txt"));
        int count = 0;
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            String[] elements = line.split(" ");

            for (int i = 0; i < elements.length; i++) {
                if ((i+1) % 4 == 0) {
                    System.out.println(elements[i].toUpperCase());
                } else {
                    System.out.println(elements[i]);
                }
            }
        }
        System.out.println("The number of capital letters are: " + count);

    } catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
    } finally {
        sc.close();
    }

}

对于包含内容的文件:w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 输出将是: W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12