2

私はSpotifyパズルに取り組んでいます(ここで見ることができます)。私はJavaでソリューションを書いています.2つのサンプル入力を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();
      }
  }

ここで私の完全なソリューションを表示できます。Spotify の提出ガイドラインに従って、実際の提出ではクラスを public と宣言していることに注意してください。

この問題は stdin から stdout への単純な I/O のみを必要とするため、try ブロック内で入力を読み取るときにスローされる可能性のある例外を考慮するだけでよいようです。私はすべての例外 (私が知っている悪いフォーム) に対して catch ブロックを提供しますが、それを処理するべきではありませんか? たぶん、他の場所で発生する可能性のあるいくつかの例外を無視していますか?

Spotify ボットが入力を解析する方法に関するいくつかの小さな特殊性を説明していない可能性がありますが、応答メッセージとガイドラインにより、問題がどこにあるかを正確に特定することは困難です. この質問が局所的すぎる場合は申し訳ありません - 他の Spotify パズルの質問はこのように見られました - しかし、私の i/o と例外の質問は十分に広く、おそらく人々は Spotify ボットがどのように機能するかについていくつかの良い答えを持っていると思います. また、Java でコーディングしてからしばらく経っているので、その他のコメントは大歓迎です。

4

1 に答える 1

3

正式に言うと、発生していた例外は、私が考えていた I/O 例外ではなく、実際には整数オーバーフロー例外でした。トラック再生を保持する変数のデータ型を int から long に変更する必要がありました。Spotify が使用していたテスト データには、私の int が保持できない非常に大きな数値が含まれていたに違いありません。これが人々に役立つことを願っています。

于 2013-05-27T17:12:38.987 に答える