在String数组中抛出异常问题

时间:2013-11-20 03:49:10

标签: java try-catch java.util.scanner

Array没有传递第一个catch。它在第一次尝试时抛出异常。 if语句在InvalidTimeException中显示正确。可能是什么问题呢?提前谢谢。

public static void main (String [] args){
    Scanner kybd = new Scanner (System.in);

    Exception TimeInUseException = new Exception("Time is taken!");
    Exception InvalidTimeException = new Exception("Time is not valid!");

    String [] schedule = new String[5];

    for(int i = 0; i<schedule.length; i++){

        System.out.println("Schedule appointment at either 1,2,3,4,5 or 6 o'clock pm ");
        schedule [i]= kybd.nextLine();

        try{

            if(schedule[i]==schedule[i+1])
                throw TimeInUseException;

        }//end of try

        catch(Exception e){
            System.out.println(e.getMessage());
            System.out.print("Program Crashed!");
            break;
        }//end of catch



        try{

            if(schedule[i]!="1" || schedule[i]!="2" || schedule[i]!="3" || schedule[i]!="4" || schedule[i]!="5" || schedule[i]!="6")
                throw InvalidTimeException;
            }//end of try

        catch(Exception e){
            System.out.println(e.getMessage());
            System.out.print("Program Crashed!");
            break;
            }//end of catch

    }//end of forLoop
}//end of main

} //

的结尾

1 个答案:

答案 0 :(得分:0)

在第

if(schedule[i]==schedule[i+1])

schedule[i+1]尚未实例化。所以你要与 null 进行比较。由于if 不为空schedule[i]语句不会成立。 not null == null 评估为False。

建议:创建一个列表并将使用过的时间添加到List或更好的HashSet。将新条目与存储值进行比较,以查看它是否已被使用。