总是抛出异常

时间:2014-04-13 16:02:43

标签: java exception

我想要发生的是从中读取文件并将文本存储在名为data []的String数组中。数据[3]应包含"警告灯为红色"或"警告灯为绿色"如果它已损坏并且不包含我定义了一个我想要抛出的自定义异常。我的代码如下:

if(data[3].equals("Warning Lights are red")){
             //do something
         }
         else if(data[3].equals("Warning Lights are green")){
             //do something
         }
         else if(!data[3].equals("Warning Lights are red") && !data[3].equals("Warning Lights are green")){
             throw  new FileCorruptionException("Unfortunately the status file was corrupted, please try printing to the file again to fix this issue.");

         }

我遇到的问题是,即使数据[3]确实等于&#34,也总是抛出FileCorruptionException;警告灯是红色的"或"警告灯为绿色",我已检入文本文件以确认此情况。我怀疑我有一个逻辑错误,但我不知道它可能是什么。任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:2)

这很可能是一个词汇问题。条件中的空格和data[3]中的空格可能存在差异。检查data[3]字符串中红色/绿色后的其他空格。希望这会有所帮助。

修改:如果您没有其他案例需要考虑,也可以使用else代替else if来抛出异常。

答案 1 :(得分:2)

您可能有一些空格,比如字符串末尾的新行。试试这个来检查是否有空格:

System.out.print(":" + data[3] + ":")

您可以使用String.trim删除前导空格和尾随空格:

if (data[3].trim().equals() ...

答案 2 :(得分:1)

尝试使用String.equalsIgnoreCase()代替String.equals()。可能存在一些案例问题。

没有必要在最后else if进行检查,因为您已经在前两个条件中检查了它。

     if(data[3].equalsIgnoreCase("Warning Lights are red")){
         //do something
     }
     else if(data[3].equalsIgnoreCase("Warning Lights are green")){
         //do something
     }
     else{
         throw  new FileCorruptionException("Unfortunately the status file was corrupted, please try printing to the file again to fix this issue.");
     }