2016-09-13 2 views
-2

Ich bin neu in Java.Wie überprüft man, ob ein Array Elemente enthält?

Ich habe ein Array, das so aussieht (Array). (Ich habe Array.toString verwendet, um dies zu drucken). So wird das Array erstellt: arraymade. Und das wird gelesen und aus einer Datei in diesem Format gemacht:

Nilsson;Lars;u;g;vg;vg 
Svensson;Lena;vg;g;g;vg 
Jonsson;Jonas;g;g;vg;g 

Ich versuche, eine Methode zu machen, die entweder „u“, „vg“ oder „g“ je nachdem, was Array der Objekte zurückgibt enthält .

@Override 
public String getKursbetyg() { 



    if (Arrays.asList(uppgiftsbetyg).contains("u")) { 
     kursbetyg = "u"; 
     return kursbetyg; 

    } else if (Arrays.asList(uppgiftsbetyg).contains("if the array contains 2 vg strings")) { 
     kursbetyg = "vg"; 
     return kursbetyg; 

    } else { 
     kursbetyg = "g"; 
     return kursbetyg; 
    } 

} 

Dies ist der Code, den ich jetzt habe, aber es scheint nicht, wie es gibt „g“ nur zu arbeiten, obwohl das Array „u“.

Auch, wie Sie sehen können, möchte ich die Methode nur vg zurückgeben, wenn 2 vg: s gefunden werden, weil Sie 2 vg: s benötigen, um die Note vg zu erhalten. Wie überprüfe ich hier die Doppelelemente?

+1

ist es ein 1-D oder 2-D Array? – Sanjeev

+1

Das Bild der Arrays zeigt 3 verschiedene Arrays, [u, g, vg], [vg, g, g], [g, g, vg], welches Array benutzen Sie? Können Sie uns zeigen, wo Sie uppgiftsbetyg setzen? – Creperum

+0

Ich habe ein Bild hinzugefügt, wie das Array gemacht wird. – haverdaden

Antwort

0

Zuerst sollten Sie Ihre Anforderungen überdenken. Das Vorhandensein einer Saite (wie u) schließt nicht die Abwesenheit der anderen aus (wie zwei vg s oder g), noch die Abwesenheit von u und zwei vg s beweisen das Vorhandensein einer g. Ihre veröffentlichten Beispiele sind diesbezüglich bereits inkonsistent.

Außerdem fehlt Ihrer Methode eine Deklaration der Variablen kursbetyg und ich hoffe wirklich, Sie ändern ein Feld nicht als Nebeneffekt dieser "get ..." Methode.

Sie können für zwei Vorkommen straight-forward suchen, indem Sie eine Unterliste mit Ausnahme des ersten Auftretens der Suche:

public String getKursbetyg() { 
    List<String> list = Arrays.asList(uppgiftsbetyg); 
    if(list.contains("u")) { 
     return "u"; 
    } 
    int index=list.indexOf("vg"); 
    if(index>=0 && list.subList(index+1, list.size()).contains("vg")) { 
     return "vg"; 
    } 
    return "g"; 
} 

eine Lösung näher an Ihre ursprüngliche Struktur, die auch in Betracht gezogen werden könnte einfacher

public String getKursbetyg() { 
    List<String> list = Arrays.asList(uppgiftsbetyg); 
    if(list.contains("u")) { 
     return "u"; 
    } else if(Collections.frequency(list, "vg")>=2) { 
     return "vg"; 
    } else { 
     return "g"; 
    } 
} 

Aber es könnte mehr Arbeit als notwendig tun, unnötigerweise das Auftreten von vg über 2 hinaus zählen.

Verwandte Themen