値の範囲を意識する

学習内容

  • Aichi Online Judgement
    • 10018 Toggling Cases
    • 10019 Sum of Numbers
    • 10020 Counting Characters
  • プログラマが知るべき97のこと
    • 28.魔法に頼りすぎてはいけない

キャスト

eclipseなので型変換ができなければ警告してくれるが、コードを打ち込む前に正しく型が変換されるのか少し考える。
String.valueOfメソッドは引数のstring型を返す。

EOFを受け取る

AOJの問題で、入力はすべてscannerクラスで受け取っていた。
しかし、scannerクラスはEOFを認識できない。
scanner.nextメソッドでEOFを受け取った場合、EOFが認識できずNoSuchElementExceptionが発生する。
これを利用して、NoSuchElementExceptionをキャッチし、EOF入力後の処理を実装した。
catch文はあくまで例外処理のためのブロックなので、finally文を追加し、その中にEOF入力後の処理を移動させた。

値の範囲

int型は1000桁におよぶ値を扱えないため、入力された数値を文字列として扱い、その後、内部で数値としての処理を行う問題にて。
int型は1000桁の値を扱えないと問題文に明記されているにもかかわらず、Integer.parseIntメソッドで文字列から値への変換を行い例外発生。
型変換前の値が、変換する型の値の範囲で表現できるのか考えたい。