2017-01-27 21 views
0

私は日の温度で与えられた配列を持っています。そして、何日も温度が22℃だったことがわかるクラスを作る必要があります。ここに私がやったことです:i++if内にあるので、私はあなたのコードを推測している与えられた配列の数値の頻度を見つけるJavaプログラムを作成します。

public class Frequence { 
    public static void main(String args[]){ 
     int arr[] = {20,22,18,19,20,25,27,30,29,29,24,22,16,18,20,23,21,22,26,30,28,29,28,27,26,26,27,23,24,25}; 
     System.out.println(count); 
    } 

    public static int frekuenc(int[] arr) { 
     int count=0; 
     int i=0; 

     while(i<arr.length) { 
      if(arr[i]==22) { 
       count=count+1; 
       i++; 
       return count; 
      } 
     } 
    } 
} 
+3

質問をするのを忘れました。 – shmosel

答えて

1
public class Frequence { 

    public static void main(String args[]) { 
     int arr[] = { 20, 22, 18, 19, 20, 25, 27, 30, 29, 29, 24, 22, 16, 18, 20, 23, 21, 22, 26, 30, 28, 29, 28, 27, 
       26, 26, 27, 23, 24, 25 }; 
     System.out.println(frekuenc(arr, 22)); 
    } 

    public static int frekuenc(int[] arr, int tempToFind) { 
     HashMap<Integer, Integer> countMap = new HashMap<>(); 
     for (int i = 0; i < arr.length; i++) { 
      Integer temperature = new Integer(arr[i]); 
      if (countMap.get(temperature) != null) { 
       countMap.put(temperature, countMap.get(temperature) + 1); 
      } else { 
       countMap.put(temperature, 1); 
      } 
     } 
     return countMap.get(tempToFind); 

    } 
} 
2

は、無限ループします。代わりにループの最後に移動します。そして、returnステートメントは、ループからすべて移動する必要があります。それ以外の場合は最初の試合に戻ります。

int count = 0; 
int i = 0; 
while(i<arr.length) { 
    if(arr[i]==22){ 
     count++; 
    } 
    i++; 
} 
return count; 

それとも、より多くの従来のforループ使用することができます

int count = 0; 
for (int i = 0; i < arr.length; i++) { 
    if(arr[i]==22){ 
     count++; 
    } 
} 
return count; 

または強化for

int count = 0; 
for (int n : arr) { 
    if (n == 2) { 
     count++; 
    } 
} 
return count; 

またはストリーム:

return Arrays.stream(arr) 
     .filter(n -> n == 22) 
     .count(); 
+1

著者が質問をするのを忘れてしまったにもかかわらず、大変努力しました! – Coder

+0

@shmosel申し訳ありません、私は尋ねるのを忘れて、ありがとう – Albanian

関連する問題