2017-02-18 55 views
-2

要求用戶給你一個包含一系列單詞的文件的名稱,每行一個,並計算文件中每個單詞的得分。向用戶報告哪個詞是最積極的,哪個詞最消極。一個例子來看可能是這樣的:你如何比較你從方法中調用的每個值?

的,看起來像一個文件:

terrible 
horrible 
ok 
refreshing 
formulaic 

這基本上是我必須做的...... 我寫了這個問題的代碼


// Scanner input for user to put in values 
    Scanner input = new Scanner(System.in); 

    // File 
    File file = new File("MovieReviews.txt"); 
    Scanner fileInput = new Scanner(file); 

    // User input of file 
    System.out.println(" Enter the name of the file with words you want to score : "); 
    String fileName = input.nextLine(); 
    File file2 = new File(fileName); 
    Scanner fileInput2 = new Scanner(file2); 

    // Loop 
    while (fileInput2.hasNext()) { 
     String word = fileInput2.nextLine().toLowerCase(); 

     double scores = (double) rating(fileInput, word); 

    } 

} 
// Method 

public static double rating(Scanner fileInput, String word) { 
    // Variables 
    double score = 0; 
    double rate = 0; 
    int count = 0; 

    // Loop 
    while (fileInput.hasNext()) { 
     int rating = fileInput.nextInt(); 
     String review = fileInput.nextLine().toLowerCase(); 
     int location = review.indexOf(word); 

     if (location >= 0) { 

      count++; 
      rate = rate + rating; 
      score = rate/count; 

     } 
    } 
    return score; 
} 

} 

P租賃幫我在這裏.. 我不知道如何比較價值觀,並獲得最大/最小。

+0

JavaScript!= Java。 – nnnnnn

+0

你如何「計算一個單詞的分數」?一個詞如何比另一個詞「更積極」?如果你要求編寫一個基於人類語言的詞彙直觀權重的程序,它將會花費很多更多的代碼。 – David

+0

Plz指定「一個詞的分數」是什麼意思? –

回答

0

閱讀你的問題,你的代碼去了幾次之後,我覺得這是你的目標是什麼:

你有以下格式的文件1:

abc 5.6 
pqrs 3.2 
xyz 9.3 
abc 7.9 
lmnop 5.2 

你的程序要求用戶輸入文件2位置(不同於上述文件),其僅具有單詞(電影)的內容。

abc 
xyz 
sdf 

那麼你的程序應該是從文件中讀取2每個單詞(電影)和文件1找到自己的評論,並採取平均水平。最後,你的節目必須返回最高評論的電影和評論最低的電影(例如,在上述情況下,xyz的平均評價最高,abc的平均評價最低)(電影sdf沒有任何評論在文件1,因此將被忽略)。

解決方案

可以使用Map存儲字(電影名)爲重點和平均評分爲價值。所以,換句話說,你可以使用一個像Map<String, Double>這樣的數據結構,然後,你所要做的就是對這個集合進行排序並返回第一個和最後一個條目,參見下面的代碼片段,它是從你的代碼中修改的:

Map<String, Double> map= new HashMap<>(); 
// Loop 
while (fileInput2.hasNext()) { 
    String word = fileInput2.nextLine().toLowerCase(); 
    double scores = (double) rating(fileInput, word); 
    map.put(word, scores); 
} 

Collections.sort(map, new Comparator<Entry<String, Double>>() 
    { 
    public int compare(Entry<String, Double>> o1, Entry<String, Double>> o2) { 
     return o1.getValue().compareTo(o2.getValue()); 
    } 
    }); 
相關問題