2016-04-04 12 views
0

Also hier ist mein Dilemma, ich versuche, ein Array nach einem bestimmten Wert zu suchen, aber ich bekomme einen Fehler, den ich nicht zu beheben weiß. Hier ist mein aktueller Code:Suche nach einem Array für einen bestimmten Wert

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"); 
     } 
    } 
} 

Die Fehlermeldung erhalte ich ist wie folgt:

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

Jede Hilfe zu dieser wäre sehr dankbar! Danke im Voraus.

+0

Arrays haben keine 'contains'-Methode, die sie aufrufen können, das ist es, was der Fehler Ihnen zu sagen versucht. – SomeJavaGuy

+0

Also, was ist die richtige/beste Art, ein einzelnes Array nach einem bestimmten Wert zu durchsuchen? – markus242005

+0

Verwendung kann 'sort' und' binarySort' verwenden –

Antwort

0

Was Sie wissen sollten ist, dass Array in Java keine Methode enthält(). Sie können das Array loopen und die Elemente vergleichen.

1

Sie könnten dies mit Java 8:

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

Es Array von Doppel zu Doppelstrom verwandelt. Danach vergleicht es den Stream mit einem Prädikat, das sagt, dass i zum Beispiel gleich 10.0 ist.

Ich hoffe es hilft.

Verwandte Themen