我试图通过输入它们作为参数来使用包含长字符串的文件。然后我试图找到两个琴弦之间的汉明距离。现在我在第7,8,9和11行有错误。他们说“找不到符号:方法长度()。”我是java的新手,所以我想知道我是否错误地使用扫描仪,或者我搞砸了其他地方导致这些错误。任何见解都将不胜感激。
如果它有助于我导入的文件格式为:
13413.123,
12314.434,
12353.809,
等等
public static double calcDifference(String[] args) throws IOException {
Scanner scanner =
new Scanner(new File(args[0]));
Scanner scanner2 =
new Scanner(new File(args[1]));
double a = 0;
for (double x = 0; x < scanner.length(); x++) {
for (double y = 0; y < scanner2.length(); y++) {
if (scanner.charAt(x) == scanner2.charAt(y)) {
a += 0;
} else if (scanner.charAt(x) != scanner2.charAt(y)) {
a += 1;
}
}
}
return a;
}
答案 0 :(得分:1)
Scanner
没有length()
(或chartAt()
,如守护进程指出的那样。)
如果您想阅读整个文件,不使用任何外部库(例如Apache)的最短路径是:
String text = new Scanner(new File(args[0])).useDelimiter("$").next();
此外,良好的做法是在完成后关闭文件。
Scanner scanner = new Scanner(new File(args[0]));
String text = scanner.useDelimiter("$").next();
scanner.close();
进一步澄清:
现在,您可以在length()
上使用charAt()
和text
。 $是输入结束的正则表达式符号。因此,Scanner
仅在调用next()
时在输入结束时停止。这不是读取整个文件的唯一方法,但它是最短的。