2016-07-14 99 views
-3

列表并退出我有个同学的列表对象的最佳方式;我想知道是否至少有一名学生有有效的身份证件。如果列表中的所有人都有无效的ID或空白ID,那么我应该存在并抛出异常。在JAVA中做这件事的最好方法是什么?什么是迭代在Java

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

我迭代数组列表并用if条件,其中学生ID中的至少一个不为空 – 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要求的。它抛出一个例外它*任何*学生有一个无效的id。如果*全部*学生ID无效,则OP只希望有异常。 –

0

假设你有一些方法来检查ID的有效性,最简单的很可能是使用Java 8的流媒体功能:

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

编辑:
如果你不是活得T使用的Java 8,你总是可以通过遍历列表,并停止创建相同的行为,一旦你遇到一个有效的学生:

private static boolean hasValidStudent(Collection<Student> students) { 
    for (Student s : students) { 
     if (isValid(s.getId()) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

感谢您的reply.I正在使用的Java 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

如果您真的需要退出条件是遇到你需要用Iterator替换foreach: Iterator studentsIterator = students.iterator(); 而(!anyValid && studentsIterator.hasNext()){ anyValid = anyValid ||的isValid(studentsIterator.next()的getId());} – garnulf