如何使用扫描仪计算文件中的字符数并将其输出?



我目前正在开发一个程序,无法弄清楚为什么每当我打印长度时,它都没有打印出正确的数字。大写和小写都可以正常工作。

示例输入为:

编程

然后,输出将是:

字符数为 16。

小写字母数为 13。

大写字母数为 3。

public static void main(String[] args) throws IOException 
{
int lowercase = 0;
int uppercase = 0;
int length = 0;
File file1 = new File("input.txt");
Scanner scanner = new Scanner(file1);
while(scanner.hasNext())
{
String s = scanner.nextLine();
length = s.length();
char[] charAnalysis = s.toCharArray();
for (char element : charAnalysis) 
{
if (Character.isUpperCase(element)) 
{
uppercase++;
}
else if (Character.isLowerCase(element)) 
{
lowercase++;
}
length = s.length();
}
}
File file2 = new File("output.txt");
try (PrintStream ps = new PrintStream(file2)) 
{
ps.println("Number of characters is " + length);
ps.println("Number of lower case letters is " + lowercase);
ps.println("Number of upper case letters is " + uppercase);   
}
catch(IOException e) 
{ 
}
}
}

每个循环都用当前行的长度覆盖长度变量。您应该更改的是将当前行的长度添加到总计中。因此,请删除您的两个length = s.length();并将其替换为一个length += s.length();语句。我假设您不想计算换行符。请参阅下面的代码:

public static void main(String[] args) throws IOException {
int lowercase = 0;
int uppercase = 0;
int length = 0;
File file1 = new File("input.txt");
Scanner scanner = new Scanner(file1);
while (scanner.hasNext()) {
String s = scanner.nextLine();
length += s.length();
System.out.println("new length = " + length);
char[] charAnalysis = s.toCharArray();
for (char element : charAnalysis) {
if (Character.isUpperCase(element)) {
uppercase++;
}
else if (Character.isLowerCase(element)) {
lowercase++;
}
}
}
File file2 = new File("output.txt");
try (PrintStream ps = new PrintStream(file2)) {
ps.println("Number of characters is " + length);
ps.println("Number of lower case letters is " + lowercase);
ps.println("Number of upper case letters is " + uppercase);
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}

最新更新