必须捕获或声明编译错误java.io.IOException错误

时间:2014-10-08 19:48:28

标签: java compilation compiler-errors java-io

这是我以前从未见过的一个新错误,我会非常感谢一些帮助

import java.util.Scanner;
public class InClass_Module_5 {

 public static void main(String[] args) {
     //char choice;
     String vehicle1, vehicle2, vehicle3, vehicle4, anStr;
     vehicle1 = "Mercedes-Benz C350 Sport Sedan";
     vehicle2 = "Volkswagen Touareg";
     vehicle3 = "Nissan Murano";
     vehicle4 = "Ford F-150";
     anStr = " is a perfect vehicle for you!";


     System.out.println("Enter the letter corresponding to the vehicle you would like to own:");
     Scanner in = new Scanner(System.in);
     char choice;

  System.out.print("\nEnter the letter corresponding to the vehicle you would like to own: ");
  choice = (char)System.in.read();

  if(choice >= 'A' && choice <= 'D')
   //choice += 32;

  if(choice >= 'a' && choice <= 'd')
   //choice -= 32; 

     System.out.println("A. " + vehicle1);
     System.out.println("B. " + vehicle2);
     System.out.println("C. " + vehicle3);
     System.out.println("D. " + vehicle4);



     System.out.println("You chose letter: " + choice);

     if (choice == 'A') {
      System.out.println("The " + vehicle1 + anStr);
     } else if (choice == 'B'){
      System.out.println("The " + vehicle2 + anStr);
     } else if (choice == 'C') {
      System.out.println("The " + vehicle3 + anStr);
     } else if (choice == 'D') {
      System.out.println("The " + vehicle4 + anStr);
     } else {
      System.out.println("You made an in-valid selection and will not be driving anything today!");
     }


}
}

错误

  

找到1个错误:文件:/ Users / gcaruso / Documents / CISS 110 / Module 3 / Module   4 / InClass_Module_5.java [line:31]错误:   / Users / gcaruso / Documents / CISS 110 / Module 3 / Module   4 / InClass_Module_5.java:31:notported exception java.io.IOException;   必须被抓住或宣布被抛出

提前谢谢

4 个答案:

答案 0 :(得分:3)

语句System.in.read();可以抛出一个IOException,这是一个经过检查的异常,这意味着如果抛出异常,则需要您的代码处理异常。

捕获代码中的异常,或声明main可以抛出此异常。正确的方法取决于抛出异常时您想要做什么:如果您希望程序以错误终止,只需声明main throws IOException

public static void main(String[] args) throws IOException {

否则,抓住异常并根据需要进行处理。

另一方面,您正在创建一个Scanner对象但不使用它(您应该收到一条警告消息)。如果您不需要,只需将其删除即可。

答案 1 :(得分:0)

将你的第31行包裹在try / catch块中,如下所示:

try
{
    // Whatever your line 31 is
}
catch(java.io.IOException)
{
    // Your error handling code
}

指定某些方法在出现错误时抛出某些异常(错误)。必须通过try / catch块捕获和处理这些异常,以隔离异常并防止它在整个代码中级联。有关详细信息,请参阅Java Tutorial

答案 2 :(得分:0)

所以,你要求用扫描仪输入信息,而且事情可能会出错,所以基本上它要你实施一个“备份计划”。可以这么说。你可以抛出异常:

public static void main(String[] args) throws IOException{...

或者你可以使用try / catch块,它会尝试一些东西:

  try {
      choice = (char)System.in.read();
  } catch ( IOException e ) {
      System.out.println("Oh no! better clean up!");
      in.close();
      e.printStackTrace();
  }

这里的try / catch语句尝试在&#39;尝试{...}&#39;阻止,如果失败,它会在“捕捉{...}&#39;块。

答案 3 :(得分:0)

至少你可以替换这个

choice = (char)System.in.read();

由此

choice = in.next().charAt(0);
choice = Character.toLowerCase(choice);

因此,您只获取输入用户的第一个字符,然后将大小写更改为