我尝试在控制台中用大写字母打印我的文本文件的每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();
}
}
}
答案 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