假设我有一个文本文件,里面充满了随机的单词或字母,我需要能够增加一个字母被看到的次数。举个例子,我试图找到字母'a'。当程序编译并返回一个数字时,这个数字可能太高或太低,这与我正在寻找的某个字母的数量有关。改变我的代码,我如何解决这个问题?
哦!我应该提到的是,我发送这段代码的人希望它以具有方法的形式构造,而Problem 9只有参数(File,file),必须构造成方法的形式
package module4labs;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.InputMismatchException;
public class Module4Labs {
public static void main(String[] args) {
new Module4Labs();
}
public Module4Labs() {
double problemSolution = Problem9(new File("Problem9.txt"));
System.out.println(problemSolution);
}
//Problem 9: Find 'a'
public int Problem9(File file) {
int counter =0;
try {
Scanner input = new Scanner(file);
ArrayList<String> list = new ArrayList<String>();
while(input.hasNext()) {
list.add(input.next());
}
for (int x=0; x<list.size()-1;x++) {
if (list.subList(x,x+1).equals('a'));
counter++;
}
input.close();
} catch (FileNotFoundException e) {
System.out.println(file + "File Not Found.");
}
return counter;
}
目前,我从Eclipse收到一个警告,说“equals()的参数类型不太可能:char似乎与List无关”
不确定如何继续
3条答案
按热度按时间n3schb8v1#
Problem9
是一个糟糕的、没有描述性的方法名。您正在计算char
的出现次数。不要硬编码char
-将其传递给方法,并给予方法一个合适的名称,如countChar
。迭代文件的行,然后迭代行的内容,查找char
。接下来,不要计算结果并在构造函数中打印出来,我会把countChar
设为静态的,但是假设你必须示例化你的类,我会在main
中这样做,然后调用这个方法,比如,wi3ka0sx2#
我们也可以使用
java.nio.file
包来完成这个任务。我创建了一个example.txt文件,它包含以下内容:
我将文件example.txt保存到与CharacterFrequency.java相同的目录中。
然后我运行命令:
qvsjd97n3#
其他代码示例使用逐行阅读和/或创建字符串。这是不必要的-只需读取
char
s: