2016-07-14 32 views
3
我有一個簡單的ArrayList問題,我得到了錯誤的輸出麻煩

方法,好像在程序計算串的數量在ArrayList中,而不是數起,但元音編寫一個名爲averageVowels

import java.util.*; 

public class AverageVowels { 
    public static void main(String[] args) { 
    ArrayList<String> list = new ArrayList<String>(); 
    list.add("Tooo"); 
    list.add("beee"); 
    list.add("ooor"); 
    list.add("nooot"); 
    list.add("Toooo"); 
    list.add("beeee"); 

    averageVowels(list); 
    } 

    public static double averageVowels(ArrayList<String> list) { 
    double count = 0; 
    for (int i = 0; i < list.size(); i++) { 
     if (list.get(i).contains("a") 
      || list.get(i).contains("e") 
      || list.get(i).contains("i") 
      || list.get(i).contains("o") 
      || list.get(i).contains("u")) {} 

     count++; 
    } 
    double average = (double) list.size()/count; 
    System.out.println(average); 
    return average; 
    } 
} 
人物
+2

即使循環是正確的,它也沒有正確計算平均值。 –

回答

4

只要你發現一個包含元音的單詞,你就會在自己的條件下進行測試(如果條件成立,你就什麼也不做,這是另一個問題)。

您不計算每個單詞中的單個元音。

您應該迭代每個輸入單詞的字符以計​​算元音的總數。

for (String word : list) { 
    for (int j = 0; j < word.length(); j++) { 
     if (word.charAt(j)=='a'||word.charAt(j)=='e'||word.charAt(j)=='i'||word.charAt(j)=='o'||word.charAt(j)=='u') { 
      count++; 
     } 
    } 
} 

除此之外,你得到的平均值倒退。它應該是:

double average = (double)count/list.size(); 

元音用文字數除以總數爲您提供了元音的平均日數字。

+2

@ PM77-1也許我應該寫下 - 「你打算增加數......」:)。考慮到條件本身是錯誤的,Count ++在該條件之外的事實似乎不太相關。 – Eran

+0

謝謝,那就是我需要保存的東西,你怎麼知道java可以給我任何指針? –

+0

,我不知道如何使用調試器,這就是爲什麼我不擅長循環和嵌套for循環(例如,我不能爲我的生活做一個明星模式)我在我的腦海調試.... ..我如何學習? –