2016-09-13 3 views
-2

Я новичок в Java.Как проверить, содержит ли массив элементы?

У меня есть массив, который выглядит так: (Array). (Я использовал Array.toString для печати). Так производится массив: arraymade. И это читается и сделал из файла в этом формате:

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

Я пытаюсь сделать метод, который возвращает либо «U», «ВГ» или «г» в зависимости от того, что содержит массив объектов ,

@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; 
    } 

} 

Это код, который я есть сейчас, но это не похоже на работу, как это только возвращает «г», даже если массив содержит «и».

Также, как вы можете видеть, я хочу, чтобы метод возвращал vg только при наличии 2 vg: s, потому что вам нужно 2 vg: s, чтобы получить оценку vg. Итак, как я могу проверить наличие двойных элементов?

+1

Это одномерный или двумерный массив? – Sanjeev

+1

Изображение вашего массива показывает 3 разных массива, [u, g, vg], [vg, g, g], [g, g, vg], какой массив вы используете? Можете ли вы показать нам, где вы устанавливаетеpgpgsbetyg? – Creperum

+0

Я добавил рисунок, как массив создан. – haverdaden

ответ

0

Во-первых, вы должны пересмотреть свои требования. Наличие одной струны (например, u) не исключает отсутствия других (например, двух vg s или g), а также отсутствие u и два vg с подтверждают наличие g. Ваши опубликованные примеры уже несовместимы в этом отношении.

Кроме того, в вашем методе отсутствует объявление переменной kursbetyg, и я очень надеюсь, что вы не изменяете поле как побочный эффект этого метода «получить ...».

Вы можете найти два вхождения Прямодушного пути поиска подсписка за исключением первого появления:

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

решения ближе к исходной структуре, которая также может быть рассмотрена более простым является

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

Но это может сделать больше работы, чем необходимо, путем ненужного подсчета вхождений vg за пределы 2.

Смежные вопросы