2016-04-04 8 views
0

これは私のジレンマですが、配列を特定の値で検索しようとしていますが、修正方法がわからないというエラーが発生しています。ここに私の現在のコードは次のように私は取得しています特定の値の配列を検索する

import java.util.Arrays; 

public class Marathon { 

public static void main(String[] args) { 

    double[] weeks = {2,4.66,7.33,10,12.66,15.33,18,20.66,23.33,26}; 
    double sum = 0; 
    int length = weeks.length; 

    for (double i : weeks) 
     sum += i; 

    System.out.println("What is the value for array element 2: " + weeks[1]); 
    System.out.println("What is the list length: " + length); 
    System.out.println("Sum of all miles run during the 10 week period: " + sum); 
    System.out.println("Does the list contain a week with 4 miles: "); 

    boolean retval = weeks.contains(4.00); 
    if (retval == true) { 
     System.out.println("10 is contained in the list"); 
     } 
     else { 
     System.out.println("10 is not contained in the list"); 
     } 
    } 
} 

エラーメッセージは次のとおりです。

Cannot invoke contains(double) on the array type double[] 
Marathon.java/do while/src line 18 Java Problem 

この上の任意の助けをいただければ幸いです!前もって感謝します。

+0

配列は、それらが呼び出すことができる 'contains'メソッドを持っていません。エラーがあなたに伝えようとしているものです。 – SomeJavaGuy

+0

特定の値のために単一の配列を検索するための適切な/最良の方法は何ですか? – markus242005

+0

'sort'と' binarySort'を使うことができます –

答えて

0

Javaの配列にはcontains()メソッドがありません。 できることは、配列をループして要素を比較することです。

1

は、Java 8でこれを行うことができます:

boolean retval = DoubleStream.of(weeks).anyMatch(i->i==10.0); 

それはDoubleStream二重のあなたの配列を変換します。その後、ストリームは、たとえばiが10.0に等しいという述語と一致します。

私はそれが役に立ちそうです。

関連する問題