2013-11-01 61 views
-1

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

你有没有看过'Scanner'的文档? –

+0

在不是方法中检查dcoumentation长度扫描仪类:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html –

+0

您可以发布编译器错误和哪条线构成问题 – clwhisk

回答

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(); 

进一步澄清:

现在,你可以在text使用length()charAt()。 $是输入结束的正则表达式符号。所以,当调用next()时,Scanner仅在输入结束时停止。这不是读取整个文件的唯一方法,但它是最短的。

+0

所以,如果我理解正确,我会看看使用text.length()? “$”究竟是什么?对不起,如果这是一个愚蠢的问题。 – user2943674

+0

我扩大了我的答案。 –

相关问题