Spotify拼图:避免异常处理错误

时间:2013-01-30 03:27:46

标签: java exception-handling io spotify puzzle

我正在研究Spotify拼图(可见here)。我正在用Java编写解决方案,我已经让我的代码在Eclipse中传递他们的两个示例输入,在ideone.com上,并通过我的osx上的终端传递,所有这些都没有错误。但是,每当我提交Spotify机器人时,我都会得到以下极简主义回复:

  

我们测试了您的解决方案,但遗憾的是,

     

发现以下错误:运行时错误

     

未捕获异常

这基本上是我在输入中读到的内容:

scn = null;

try {
    scn = new Scanner(System.in);

      if(scn.hasNext()){
      strIn = scn.nextLine();
      //do work on first line of input
      }

      if(scn.hasNext()){
      strIn = scn.nextLine();
      //do work on second line of input
      }

      //do work on the rest of the lines
      while (scn.hasNext()) {
      strIn = scn.nextLine();

      if(/*reached last line*/){
           break;
      }
      }

  }

  catch(Exception e){
      System.out.println("Exception caught");
      System.out.println(e.getStackTrace());

  } finally {
      if (scn != null) {
          scn.close();
      }
  }

您可以查看我的完整解决方案here。请注意,我的实际提交声明我的课程是公开的,根据Spotify提交指南。

由于问题只需要从stdin到stdout的简单I / O,我似乎只需要考虑当我在try块中读入输入时可能抛出的任何异常。我为所有异常提供了一个catch块(我知道的形式不好)但不应该处理它吗?也许我忽略了可能会出现在其他地方的一些例外情况?

我可能没有考虑到Spotify机器人如何解析输入的一些小特性,但他们的响应信息和指导方针使得很难确定问题究竟在哪里。如果这个问题太局部化我很抱歉 - 其他Spotify拼图问题就是这样看的 - 但我认为我的i / o和exceptons问题足够广泛,也许人们对Spotify机器人如何工作有一些好的答案。此外,我已经用Java编写了一段时间,所以任何其他评论肯定都是受欢迎的。

1 个答案:

答案 0 :(得分:3)

只是为了使它正式化,正在引发的异常不是I / O异常,就像我在想的那样,但实际上是一个整数溢出异常。我需要将变量保持轨道的数据类型从int更改为long。 Spotify使用的测试数据必须具有我的整数无法容纳的非常大的数字,这就是程序不断破坏的原因!希望这有助于人们。