2016-07-14 1 views
-3

학생 목록이 있습니다. 적어도 한 학생이 유효한 신분증을 갖고 있는지 확인하고 싶습니다. 목록에있는 모든 사용자가 유효하지 않은 ID 또는 빈 ID를 갖고 있으면 존재해야하며 예외가 발생합니다. 자바에서 그것을하는 가장 좋은 방법은 무엇입니까?목록을 반복하고 Java에서 종료하는 가장 좋은 방법은 무엇입니까

List<Student> students = ...; 
boolean hasValid = students.stream().anyMatch(s -> isValid(s.getId())); 

편집 :
당신은 때로 믿을 경우 '당신이 ID의 유효성을 확인하는 몇 가지 방법이 가정

List<Student> Students; 
    class Student { 
    int ID; 
    String Name; 
    int Marks; 
    } 

    Student one 
    ID = 1,name = Ram,Marks = 50 

    Student two 
    ID = "",name = Syam,Marks = 60 

    Student three 
    ID = 2,name = Sudan,Marks = 70 
+2

는 아무것도 시도? 이것은 코드 요청 같아 보입니다 –

+0

배열 목록을 반복하는 중이고 하나 이상의 학생 ID가 null이 아닌 경우 – Santosh

답변

0
boolean isAllInvalid= true; 
for(Student student : students){ 
if(student.getID() != null && studend.getID() >=1){// this checks for a valid id 
    system.out.print(student+ " has a valid id"); 
    isAllInvalid =false; 
    break;//early exit no need to keep looping cuz we found at least one valid id ,if you to print all valid remove the break statement. 
} 
} 
if(isAllInvalid){ 
    throw new SomeException("All students are invalid") ;//choose ur suitable exception 
} 
+0

은 각 루프마다 간단합니다. –

+0

'IllegalArgumentException' 또는'IllegalStateException'과 같은 런타임 예외를 발생시키는 것이 더 좋을 것입니다. 일반적으로 'Exception'은 절대로 던져서는 안됩니다. –

+1

이것은 OP가 요구 한 것이 아닙니다. 예외를 throw합니다 * 모든 * 학생은 유효하지 않은 ID를가집니다. OP는 * 모든 * 학생 ID가 유효하지 않은 경우에만 예외를 원합니다. –

0

는 가장 쉬운 아마 자바 8의 스트리밍 기능을 사용하는 것입니다 Java 8을 사용하면 목록을 반복하고 유효한 학생을 만나면 언제든지 같은 동작을 만들 수 있습니다.

+0

reply를 보내 주셔서 감사합니다. 자바 7 이하를 사용하고 있습니다. Java 7 및 그 이하 버전에서 구현하는 방법을 제안 할 수 있습니까? – Santosh

+0

@Santosh 아직 Java 7에 있다면 루프를 돌릴 수 있습니다. 내 편집 된 답변보기 – Mureinik

0
List<Student> students = ... 
boolean anyValid = false; 
for (Student student : students) { 
    anyValid = anyValid || isValid(student.getId()); 
} 
if (!anyValid) { 
    // throw proper Exception 
} 
+0

조건이 true 일 때 정말로 종료해야한다면 당신은 Iterator로 foreach를 대체 할 필요가 있습니다. Iterator studentsIterator = students.iterator(); while (! anyValid && studentsIterator.hasNext()) { anyValid = anyValid || isValid (studentsIterator.next(). getId());} – garnulf

관련 문제