プロが教えるわが家の防犯対策術!

例外処理するソースコードについて質問があります。
まず例外処理される前のファイルのソースコードを見てください。

public class JTest13 {

public static void main(String[] args) {
System.out.println("実行開始");
long lngTmp;
//以下を実行した瞬間に引数が無いか、整数に直せなかったら例外がスローされる
lngTmp = Long.parseLong(args[0]);
//割り算を実行する(小数点以下の数値を管理する必要がある)ため、double型に変換します
System.out.println(Double.parseDouble(args[0]) / 2);
System.out.println("tryブロック終了");
System.out.println("実行終了");
}
}

ここでアルファベットを入力すると、

実行開始
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at JTest13.main(JTest13.java:20)

これで例外処理クラスがNumberFormatExceptionだと分かるんですが、
こういう結果がでなければいけません。

実行開始
例外:java.lang.NumberFormatException For input stirng:"a"
引数を整数で入力して下さい。
実行終了

これで問題なのがmainメソッドで例外処理するのではなく、整数チェック用のメソッド内でエラー処理するプログラムを作らなければならない事です。
変数がargs[0]なのでどうやってメソッドを作っていいのか分かりません。
ヒントだけでいいので、どうぞ宜しくお願い致します。

A 回答 (13件中11~13件)

質問したいことがよくわからないな。



static void checkNumber(String in){
のようなメソッド作ってExceptionをキャッチして出力
mainでは
checkNumber(args[0]);
みたいに呼び出せば?
(メソッド名、メソッド型は適宜変更してくれ)
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
自分には少し難しいんですが、このメソッドはlong型に変換した後に作るべきでしょうか。
何か検討外れ名事を言っているようで恥ずかしいんですが、例外処理メソッドcheckNumber(String str)の後は全て出力なので後はdouble型に変換されて、終わりと言うことですかね。
頑張って作ってみますね。

お礼日時:2009/02/24 20:27

> 変数がargs[0]なのでどうやってメソッドを作っていいのか分かりません。


argsの型はわかるが、args[0]の型はわからない。ということでしょうか?
もしそうでしたら、以下の回答を参考にしてください。
---
argsはString型の配列なので、args[0]はString型です。
ですので、String型の引数を持つメソッドを作ればOKです。
---

見当違いだったらすみません。
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
String型のメソッドを作るという事はreturnでString型を返すんですよね。
整数を入れるプログラムですから一度整数型を含む実数型の変数に変換してもう一度String型に戻せばいいのですかね。
ちょっと試してみますね。

お礼日時:2009/02/24 10:17

変数がargs[0]だとダメなの?


何だとできるの???
    • good
    • 0
この回答へのお礼

え~とですね、mainメソッド以外でargs[0]って使用できますか。
物凄く超ど素人的な疑問なんですけど、多分できるんですよね。

お礼日時:2009/02/24 10:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!