我似乎无法告诉我为什么我的代码在这里失败了

时间:2013-11-01 03:07:14

标签: java

我试图通过输入它们作为参数来使用包含长字符串的文件。然后我试图找到两个琴弦之间的汉明距离。现在我在第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;
}

1 个答案:

答案 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()时在输入结束时停止。这不是读取整个文件的唯一方法,但它是最短的。