2010-04-26 3 views
1

Мне удалось получить этот код для компиляции с ошибкой. Но каким-то образом он не возвращал строки, которые я написал в файлах file1.txt и file.txt, которые передают его путь через str1 и str2. Моя цель - использовать эту библиотеку с открытым исходным кодом для измерения сходства между строками, содержащими внутри 2 текстовых файлов.fileToSTring продолжает возвращаться »«

Внутри его Javadoc, его состояния, что ...

public static java.lang.StringBuffer fileToString(java.io.File f) 

private call to load a file and return its content as a string. 

Parameters: 
    f - a file for which to load its content 
Returns: 
    a string containing the files contents or "" if empty or not present 

Вот мой модифицированный код пытается использовать функцию FileLoader, но не возвращает строки в файле. Конечный результат продолжает возвращать мне «». Я не знаю, где моя вина:

package uk.ac.shef.wit.simmetrics; 
    import java.io.File; 
    import uk.ac.shef.wit.simmetrics.similaritymetrics.*; 
    import uk.ac.shef.wit.simmetrics.utils.*; 


public class SimpleExample { 
    public static void main(final String[] args) { 
    if(args.length != 2) { 

     usage(); 

    } else { 

     String str1 = "arg[0]"; 
     String str2 = "arg[1]"; 

     File objFile1 = new File(str1); 

     File objFile2 = new File(str2); 

     FileLoader obj1 = new FileLoader(); 
     FileLoader obj2 = new FileLoader(); 

     str1 = obj1.fileToString(objFile1).toString(); 

     str2 = obj2.fileToString(objFile2).toString(); 


     System.out.println(str1);    
     System.out.println(str2); 


     AbstractStringMetric metric = new MongeElkan(); 

     //this single line performs the similarity test 

     float result = metric.getSimilarity(str1, str2); 

     //outputs the results 

     outputResult(result, metric, str1, str2); 

    } 

} 


private static void outputResult(final float result, final AbstractStringMetric metric, final String str1, final String str2) { 

    System.out.println("Using Metric " + metric.getShortDescriptionString() + " on strings \"" + str1 + "\" & \"" + str2 + "\" gives a similarity score of " + result); 



} 



private static void usage() { 

    System.out.println("Performs a rudimentary string metric comparison from the arguments given.\n\tArgs:\n\t\t1) String1 to compare\n\t\t2)String2 to compare\n\n\tReturns:\n\t\tA standard output (command line of the similarity metric with the given test strings, for more details of this simple class please see the SimpleExample.java source file)"); 

} 

}

Обновление: Я изменил код, но он дает мне эту ошибку:

SimpleExample.java:79: cannot find symbol 
symbol : variable arg 
location: class uk.ac.shef.wit.simmetrics.SimpleExample 
     String str1 = arg[0]; 
        ^
SimpleExample.java:80: cannot find symbol 
symbol : variable arg 
location: class uk.ac.shef.wit.simmetrics.SimpleExample 
     String str2 = arg[1]; 
        ^
+1

@karikari, у меня была опечатка, попробуйте 'args' вместо' arg'. Кроме того, откуда появился класс 'FileLoader'? –

+0

@anthony, класс FileLoader исходит из библиотеки symmetric.jar, открытого исходного кода. – karikari

ответ

2

Если вы работаете в вашей Java программы с помощью командной строки, вы, кажется, не извлекая аргументы правильно,

String str1 = "arg[0]"; 
String str2 = "arg[1]"; 

Должно быть,

String str1 = args[0]; 
String str2 = args[1]; 
+0

это работает .. спасибо! – karikari

+0

Не проблема, в любое время. –

Смежные вопросы