我需要操作此代码,以便它将读取文件中的数字位数。 老实说,出于某种原因,我真的很难过。我需要先将其标记化吗? 谢谢!
import java.io.*;
import java.util.*;
public class CountLetters {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("Synopsis: Java CountLetters inputFileName");
System.exit(1);
}
String line = null;
int numCount = 0;
try {
FileReader f = new FileReader(args[0]);
BufferedReader in = new BufferedReader(f);
while ((line = in.readLine()) != null) {
for (int k = 0; k < line.length(); ++k)
if (line.charAt(k) >= 0 && line.charAt(k) <= 9)
++numCount;
}
in.close();
f.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(numCount + " numbers in this file.");
} // main
} // CountNumbers
答案 0 :(得分:2)
使用''
表示char
常量(您将char
与int
s进行比较),我建议您使用try-with-resources
Statement来避免显式关闭调用,请避免使用没有大括号的一行循环(除非你使用lambdas)。像
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("Synopsis: Java CountLetters inputFileName");
System.exit(1);
}
String line = null;
int numCount = 0;
try (BufferedReader in = new BufferedReader(new FileReader(args[0]))) {
while ((line = in.readLine()) != null) {
for (int k = 0; k < line.length(); ++k) {
if ((line.charAt(k) >= '0' && line.charAt(k) <= '9')) {
++numCount;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(numCount + " numbers in this file.");
} // main
此外,您可以使用正则表达式删除所有非数字(\\D
)并添加结果String
的长度(全数字) 。像,
while ((line = in.readLine()) != null) {
numCount += line.replaceAll("\\D", "").length();
}
答案 1 :(得分:1)
使用if(Charachter.isDigit(char))
将char替换为每个字符,这将计算每个数字,我也相信阿拉伯数字。