eclipce上でエラーが出てしまいます。
きっとコンパイルエラーが出ているのですね。
Java
1String valStr;
2int valInt;
3double valDouble;
ここはmainメソッドのローカル変数だとすると初期化が必要です。
Java
1} else if ( args[i] instanceof Integer ) {
Java
1} else if ( args[i] instanceof Float ) {
もエラーですね。args[i] は String 型なので、互換性のない型に対して instanceof 演算子を使用しているので文法的に誤りです。
ついでに言うと Float と Double は違いますので、この処理の中ではどちらかに統一して使いましょう。
次いで・・・
がエラーになっていると思います。
前者は型が合わない、後者は変数が存在しない、という状態。
まず後者は、valDouble ですね。
それを直すと前者と同様に型が合わないというエラーになるでしょう。
args は、おそらく main(String[] args) の args ですよね。
そうだとすると、args[i] は String 型です。
一方、valInt、valDouble はそれぞれ、int型、double型ですので、 String 型の args[i] を代入しようとしても型が一致しないというエラーになります。
エラーはそんなところかと。
また、instanceof演算子は、オブジェクトがどの型であるかを判定するためのものですから、instanceof の使用している行でコンパイルエラーにならなかったとしても、書かれている if ~ else if 文の各条件において、常に最初の条件で true になってしまって他の else if や、最後の else の処理が実行されることはないでしょう。
どうするかというのは他の方の回答にある通り、args[i] の文字列が整数とみなせるものか、浮動小数点数と見なせるものかを判定して、型を変換して値を代入する必要があります。どちらでもない場合は常に String型 です。
Java
1String valStr = "";
2int valInt = 0;
3double valDouble = 0.0;
4
5if ( 何らかの方法で args[i] の文字列が整数と言えるかを判定 ) {
6 valInt = 何らかの方法で整数に変換(args[i]);
7} else if ( 何らかの方法で args[i] の文字列が浮動小数点数と言えるかを判定 ) {
8 valDouble = 何らかの方法で浮動小数点数に変換(args[i]);
9} else {
10 valStr = args[i];
11}
12
もし各変数の未設定状態を把握したいのであれば、int と double をそれぞれ Integer、 Double に変えて、変数の初期化は valStr も含めて null を設定しましょう。
そうすることで、あとで null の変数はコマンド行引数からの値設定がされていない状態だということが判定できます。
Java
1String valStr = null;
2Integer valInt = null;
3Double valDouble = null;
Java は型にうるさいのでスクリプト系の動的型付けとは趣が異なります。