-1

引数として入力して、長い数字の文字列を含むファイルを使用しようとしています。次に、2 つの文字列間のハミング距離を見つけようとしています。現在、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

1 に答える 1

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()onを使用できますtext。$ は、入力の終わりを表す正規表現記号です。そのため、が呼び出されたScannerときにのみ、入力の最後で停止します。next()これはファイル全体を読み取る唯一の方法ではありませんが、最短の方法です。

于 2013-11-01T03:10:31.673 に答える