我是Java的新手,在第一次上课时遇到了麻烦。 目的是从计算机读取文本文件(para1.txt),并计算文件中出现了多少个a。 我目前拥有的代码能够计算每行a的数量,但不能计算整个文件中a的数量,而且我不确定如何更改我的代码以解决此问题。
这里是我所拥有的:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class LetterCounter {
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("src/para1.txt"));
while (input.hasNextLine()) {
String answer = input.nextLine();
answer = answer.toLowerCase();
char someChar = 'a';
int count = 0;
for (int i = 0; i < answer.length(); i++) {
if (answer.charAt(i) == someChar) {
count++;
}
}
System.out.println(answer);
System.out.println("a - " + count);
}
}
}
答案 0 :(得分:1)
您在每次迭代中都初始化变量count
,这是错误的。在while
之外声明变量,并检查其是否有效。从您的代码中,它将仅打印最后的行数。
请对您的代码进行以下更改:
public class LetterCounter
{
public static void main( String[] args ) throws FileNotFoundException
{
Scanner input = new Scanner( new File( "src/para1.txt" ) );
char someChar = 'a';
int count = 0;
while ( input.hasNextLine() )
{
String answer = input.nextLine();
answer = answer.toLowerCase();
for ( int i = 0; i < answer.length(); i++ )
{
if ( answer.charAt( i ) == someChar )
{
count++;
}
}
System.out.println( answer );
}
System.out.println( "a - " + count );
input.close();
}
}
答案 1 :(得分:0)
您的计数应在行循环之外定义:
int count = 0;
char someChar = 'a';
while (input.hasNextLine()) {
String answer = input.nextLine();
answer = answer.toLowerCase();
for (int i=0; i < answer.length(); i++) {
if (answer.charAt(i) == someChar) {
count++;
}
}
System.out.println(answer);
}
System.out.println("a - " + count);