验证列表中的项目是否存在会导致错误的结果

时间:2016-06-13 10:10:36

标签: class exception arraylist collections types

我很难向“bookShow”函数显示预期的输出

列表showlist =是节目列表,显示时间和每个节目可用的座位数

String showName =是用户输入的showName

String show_time =是用户输入的showTime

int noOfSeats =是用户输入的席位数

如果用户输入的showName不属于列表,我希望函数显示“UnknownShowException”。

但无论我输入什么作为showName,它都给了我异常。即使showName出现在List中,它仍然会给我异常。

public void bookShow(List<Show> showList, String showName,  String show_time, int noOfSeats)
        throws SeatsNotAvailableException, UnknownShowException, InvaildSeatNumberException {
    // TODO Auto-generated method stub  
        List<Show> list=showList;
        Iterator<Show> itr= list.iterator();
        try{
        while(itr.hasNext()){
            if(noOfSeats<0){
                throw new InvaildSeatNumberException();
            }
         if(noOfSeats>itr.next().getSeatsAvailable()){
                throw new SeatsNotAvailableException();
            }

            if(!(list.contains(showName))){
                throw new UnknownShowException();
            }
        }

    }catch(Exception e){
        System.out.println("" + e);
    }
}   
  }

请告诉我哪里出错......

1 个答案:

答案 0 :(得分:0)

ShowName是一个字符串,Showlist是Show Object的列表,所以当您搜索节目列表中的特定字符串时,您将获得none,因为没有show object等于您的字符串。您必须将字符串与show对象中的show name属性相匹配。 因此,如果显示对象具有属性&#34;名称&#34;以下将起作用

public void bookShow(List<Show> showList, String showName,  String show_time, int noOfSeats)
        throws SeatsNotAvailableException, UnknownShowException, InvaildSeatNumberException {
    // TODO Auto-generated method stub  
        List<Show> list=showList;
        Iterator<Show> itr= list.iterator();
        try{
        while(itr.hasNext()){
            if(noOfSeats<0){
                throw new InvaildSeatNumberException();
            }
         if(noOfSeats>itr.next().getSeatsAvailable()){
                throw new SeatsNotAvailableException();
            }

            if(!(list.Any(x=>x.Name == showName))){
                throw new UnknownShowException();
            }
        }

    }catch(Exception e){
        System.out.println("" + e);
    }
}   
  }