我正在使用java创建一个文本分析器,我正在尝试的是搜索文本文档,并计算有多少大写字母。
public static void main(String[] args) {
Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt"));
String s = sc.nextLine();
int upperCaseCount = 0;
int linecount = 0;
while (sc.hasNextLine()) {
sc.nextLine();
linecount++;
}
for (int i = 0; i < s.length(); i++) {
for (char c = 'A'; c <= 'Z'; c++) {
if (s.charAt(i) == c) {
upperCaseCount++;
}
}
}
System.out.println(upperCaseCount + "");
}
}
我认为我必须要考虑有多少行,这就是为什么我在顶部添加了一个行数,虽然我不确定如何用大写数量来实现这一点在第一行工作。
答案 0 :(得分:8)
您不需要CapitalCount类来扫描文件。
以下是我的工作解决方案:
public static void main(String[] args) {
Scanner sc = null;
try {
sc = new Scanner(new File("test.txt"));
int count = 0;
while(sc.hasNext()){
String line = sc.nextLine();
for(int i = 0 ; i < line.length(); i++){
if(line.charAt(i) >= 'A' && line.charAt(i) <= 'Z'){
count ++;
}
}
}
System.out.println("The number of capital letters are : "+count);
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
finally{
sc.close();
}
}
答案 1 :(得分:2)
内部循环无需检查字母是否为大写字母。 变化
for (char c = 'A'; c <= 'Z'; c++) {
if (s.charAt(i) == c) {
upperCaseCount++;
}
}
到
if (s.charAt(i) >= 'A' and s.charAt(i) <= 'Z') {
upperCaseCount++;
}
答案 2 :(得分:2)
试试这段代码:
public static void main(String[] args) {
Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt"));
int upperCaseCount = 0;
int linecount = 0;
String lineInput = null;
while (sc.hasNextLine()) {
lineInput = sc.nextLine();
linecount = lineInput .length();
for(int i=0; i < linecount; i++)
if (Character.isUpperCase(lineInput.charAt(i))) upperCaseCount++;
}
System.out.println(upperCaseCount + "");
}
答案 3 :(得分:1)
您应该使用Character.isUpperCase()
方法而不是手动操作。
public static void main(String[] args) {
try {
Scanner sc = new Scanner(new File("test.txt"));
int capitalCount = 0;
int lineCount = 0;
while(sc.hasNext()){
lineCount++;
String line = sc.nextLine();
for(int i = 0 ; i < line.length(); i++){
if(Character.isUpperCase(line.charAt(i))) {
capitalCount++;
}
}
}
System.out.println("Number of lines: "+lineCount);
System.out.println("Number of capital letters: "+capitalCount);
}
catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
}
答案 4 :(得分:0)
你有没有尝试用大写字母的模式调用“.next(Pattern pattern)”方法? 我认为你应该为每一行计算大写字母,所以在之前进行循环..