• ベストアンサー

コマンドライン引数の掛け算のプログラムを教えて下さい。

コマンドライン引数で*で掛け算するプログラムを作成しています。 「"*"」の入力なしに c:\myweb\keisanmain>java myweb.Keisanmain.Keisan 1 * 2 を実行してくれる掛け算のプログラムを自分なりにここまで作成しました。 実行の結果 c:\myweb\keisanmain>java myweb.Keisanmain.Keisan 1 * 2 Exception in thread "main" java.lang.NoClassDefFoundError: myweb/Keisanmain/Keisan というバグがでます。 どうかわかる方お時間があるときに教えて下さい。 package myweb.keisanmain; class Mainkeisan{ public static void main (String args[]){ if(args.length == 0){ }else if(args.length == 1){ }else if(args.length == 2){ }else if(args.length == 3){ /** *c:\myweb\keisanmain>java myweb.Keisanmain.Keisan 1 * 2 Exception in thread "main" java.lang.NoClassDefFoundError: myweb/Keisanmain/Keis an */ double num =0.0; Integer a = new Integer("args[0] * args[1]"); double b = a.doubleValue(); System.out.println(b); } } }

  • rubi7
  • お礼率31% (11/35)
  • Java
  • 回答数16
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.13

#12>catchのところをExceptionクラスからRuntimeException です。 #12>どうもcatch してないらしいです。 System.out.println は、例外をスローしません。 parseInt は、例外として NumberFormatException をスローします >たんに入力した文字を数値として返しているようですね。これではargs[2]の意味がありません。 については、意味がわかりません。 再三言っているのに >Integer b = Integer.parseInt(args[1]); しているのはなぜですか

rubi7
質問者

補足

エラーのとりかたを教えていただいて恐縮します。 なぜ変えなかったかは私がそこの意味をしっかり 理解しれなかったからです。教えていただいているのにわからないまま書くのではBLUEPIXYさんをはじめ 皆様にエラーの意味をわかってからソースをそのまま 書きお返事をまずは書きたかったのです。いらいらさせてすいません。本当にごめんなさい。反省しております。今度出すときはもう少しましなソースを だします。最近皆様にたてつづけに聞いているので 毎日でなく数日おきに聞きます。それではここでまた質問するときはどうぞよろしくお願いします。

その他の回答 (15)

  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.16

#15の回答に間違いがありました。 m(_ _)mすみません。 【誤】 double a = Long.parseLong(args[0]); 【正】 double a = Double.parseDouble(args[0]); 【誤】 double c = Long.parseLong(args[2]); 【正】 double c = Double.parseDouble(args[2]);

rubi7
質問者

お礼

yychi-coさん。ありがとうございました。

  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.15

こんにちは。#11です。 #10のBLUEPIXYさんの回答のとおり、パッケージ宣言をはずしたら実行はできたんですね^^ であれば、私の回答したCLASSPATHの設定云々はまったく関係ありません。 ごめんなさいねm(_ _)m ちなみに、私が申し上げたのはPathではなくCLASSPATHです。 ソースの内容について。 1.渡す引数は3個ですよね。数字1と演算子と数字2です。 >java Mainkeisan 1 * 2 なので、コマンドライン引数が3個だった場合にのみ実行すればよいので、下記は不要です。 if(args.length == 0){ }else if(args.length == ){ }else if(args.length == 2){ }else if(args.length == 3){ シンプルに if(args.length == 3){ //処理 } で良いのではないでしょうか。 2.例外が発生するのはInteger b = Integer.parseInt(args[1]);の部分です。 2個目に渡した"*"が数値に変換できないのでargs[1]をparseIntしようとするとNumberFormatExceptionが発生します。 すなわち、 Integer a = Integer.parseInt(args[0]); Integer b = Integer.parseInt(args[1]); Integer c = Integer.parseInt(args[2]); の部分もtry~catchすべき内容に含みます。 数字以外の文字がparseIntに渡されれば例外が発生するのでtry~catchで囲みましょう。 tryの中に例外が発生するかもしれない処理を書き、catchで指定するのはcatchしたい例外のクラスです。 今回の場合はNumberFormatExceptionです。 そもそも演算子"*"は数値に変換する必要がないのでparseIntする必要はありません。 また、一度paseIntしてdoubleに変換しなおしているようですが、doubleで計算するのであれば、最初からLongクラスのparseDoubleで良いのでは? double a = Long.parseLong(args[0]); String b = args[1]; double c = Long.parseLong(args[2]); このようにすれば、 double d = a.doubleValue(); double f = c.doubleValue(); は不要です。 num = a * c;となります。 この場合も数字以外のものを渡すとNumberFormatExceptionが発生するのでtry~catchが必要です。 掛け算しかしないプログラムであれば、args[1]の"*"を取得する必要はありませんが。 コマンドライン引数に渡された演算子によって掛け算以外の計算もしたい場合はまた別の制御が必要になります。 思った結果を得るために必要な処理を日本語で書き出してみて、それに沿ったプログラムがかかれているかどうか見直してみてください。 また、スペルミス等ないかどうかしっかり確認してください。 BLUEPIXYさんのアドバイスがまったく反映されてませんよ。

rubi7
質問者

補足

まずは本当にありがとうございます。もうすこし考えます。今日はアスタリスクのところとclas pathの ところ勉強します。yuchi-coさん。BLUEPIXYさんの アドバイスをどうにか反映したいです。反省してます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.14

引数に何が渡るのかのテストは、例えば、 class Args { public static void main(String[] args){ for(String str : args) System.out.println(str); } } javac Args.java java Args * とか java Args 1 * 2 とかしてみて下さい。

rubi7
質問者

お礼

BLUXPYさん。するどいソースをありがとうございます。現時点では(String str : args)のところの 意味がわからないので教科書を見て調べてから また質問します。いいソースありがとうございます。 それとこれは☆でfor for の入れ子の代理で ツリー できますね!素敵なコードありがとうございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.12

#10>C:\myweb\keisanmain>java Mainkeisan 1 * 2 #10>となんにもでませんでした。あれ??なんでだろう。 java Mainkeisan 1 "*" 2 にして下さい。 なぜかは、args の内容を全部System.out.println してみたらわかると思います。

rubi7
質問者

補足

てつや組です。うーん。BLUEPIXYさん。 するどいご指摘ありがとうございます。 たんに入力した文字を数値として返しているよう ですね。これではargs[2]の意味がありません。 エラーがでました。どうやらこれはクラスの 問題であるみたいです。 コードーを変えてみました。 catchのところをExceptionクラスからRuntimeException です。 どうもcatch してないらしいです。 この仕様をまだよくわからないので調べます。 答えがわかる方アドバイス下さい。 変更コード // package myweb.keisanmain; class Mainkeisan{ public static void main (String args[]){ if(args.length == 0){ }else if(args.length == ){ }else if(args.length == 2){ }else if(args.length == 3){ double num =0.0; Integer a = Integer.parseInt(args[0]); Integer b = Integer.parseInt(args[1]); Integer c = Integer.parseInt(args[2]); double d = a.doubleValue(); double f = c.doubleValue(); try{ System.out.println(num = d * f); System.out.println("ここでprint outします。"); System.out.println(args[0]); System.out.println(args[1]); System.out.println(args[2]); }catch(RuntimeException e){ System.out.println("数字を入力してください。"); System.out.println("入力例:java Mainkeisan 1 1"); }finally{ } } } }

  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.11

c:\myweb\keisanmain\Mainkeisan.classがあり、 C:\> で java myweb.keisanmain.Mainkeisan 1 * 2 と実行して Exception in thread "main" java.lang.NoClassDefFoundError が出るのであれば、CLASSPATHの設定ではないでしょうか? CLASSPATHを定義すると実行時にカレントディレクトリ(今居る場所)のクラスが検索されなくなり、コンパイルは通るが実行できないという状況になります。 コントロールパネル→システム→詳細タブ→環境変数にCLASSPATHは定義されていますか? されていれば、今入っている値の先頭に「.;」を追加して再度試してみてください。 「.」はカレントディレクトリ、「;」は環境変数の値に複数の場所を定義する際の区切り文字です。 推測ですが。。。確認してみてください。

参考URL:
http://www.javaroad.jp/java_basic2.htm
rubi7
質問者

補足

yuchi-coさんお返事ありがとうございます。 やはりエラーだでます。 ユーザー環境変数にPathと編集して実行したところ やはりエラーでました。 環境変数の設定がいけないのでしょうか。 下記します。アドバイス下さい。 C:\>path PATH=. ;C:\Program Files\Bin;C:\Program Files\Java\jdk1.5.0_05\bin;C:\Tomcat5;\b in; 実行例 C:\>java Mainkeisan 1 * 2 Exception in thread "main" java.lang.NoClassDefFoundError: Mainkeisan

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.10

#9> c:\myweb\keisanmain\Mainkeisan.class がありますか? いったんパッケージの指定はコメントアウトして javac Mainkeisan.java java Mainkeisan 1 "*" 2 が動作するようになってから考えることにしませんか >Integer b = Integer.parseInt(args[1]); 1 "*" 2 の時 args[0] : "1" args[1] : "*" args[2] : "2" です。 これもそろそろ直しませんか

rubi7
質問者

補足

BULUEXPYさん。いつもすいません。 今日は秋の夜更かしさんです。 動作を確認したところ C:\myweb\keisanmain>java Mainkeisan 1 * 2 C:\myweb\keisanmain> となんにもでませんでした。あれ??なんでだろう。 PCは文字列かもしれないと思ってるかもしれない のに。。。と意図したためまだよくわかってない です。 もう少し考えてみます。 他に実行してみたら C:\myweb\keisanmain>java Mainkeisan 1 2 2 2.0 コマンドライン引数は無視すると計算はしているようなのですが。 もしコマンドライン引数で掛け算するプログラム がわかる方はアドバイス下さい。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.9

#7で C:\>java myweb.keisanmain.Mainekeisan 1 "*" 2 Exception in thread "main" java.lang.NoClassDefFoundError: myweb/keisanmain/Mainekeisan となるのは、スペルミスだと思います。 Mainekeisan → Mainkeisan

rubi7
質問者

補足

BLUEPIXYさん。遅くまですいません。少しだけIntegerだけソースを変更ました。 またエラーがでました。スペルは確認しました。 アドバイス下さい。他にわかる方もどうぞ アドバイス下さい。   C:\>java myweb.keisanmain.Mainkeisan 1 * 2 Exception in thread "main" java.lang.NoClassDefFoundError: myweb/keis keisan ーーーーーーーーーーーーーーーーーーーーー package myweb.keisanmain; class Mainkeisan{ public static void main (String args[]){ if(args.length == 0){ }else if(args.length == 1){ }else if(args.length == 2){ }else if(args.length == 3){ double num =0.0; Integer a = Integer.parseInt(args[0]); Integer b = Integer.parseInt(args[1]);    Integer c = Integer.parseInt(args[2]); double d = a.doubleValue(); double f = c.doubleValue(); try{ System.out.println(num = d * f); }catch(Exception e){ System.out.println("数字を入力してください。"); System.out.println("入力例:java Mainkeisan 1 1"); }finally{ } } } }

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.8

#4ですが、#4の補足に対しては既に回答がでているので、省略しますが >Integer b = new Integer("*"); は、どんな目的があってやっているのですか? "*" (あるいは、コマンドラインの*)をInteger で扱いたい? >if((a == b) || (b == c)) どういう意図で同値かどうかを調べているのでしょう?

rubi7
質問者

補足

いつもBLUEPIXYさんありがとうございます。 配列の質問でこんなに付き合ってくださってありがと うございます。がんばります。 ◆ Integer b = new Integer("*"); まず コマンドライン引数で >1*2を全て>確かにIntegerクラスでは 文字列を宣言・オブジェクト化しているだけですね。アフタリスクをどうにか処理するために苦肉の 策ではちゃめちゃになってしまったんだと思います。 >if(a==b||b==c)としたのは アスタリスクを解決するため「”1 * 2 ”」と大きくみておおきなかたまりとプログラムを作成 したかったんですが大きな勘違いですね。 これも勘違いして申し訳ないです。

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.7

えーと、なんだかいろいろと・・・ 1.ANo.2の補足です。 >また、今回の実行コマンドが引数との間にスペースがないため、 >Mainkeisan1 >と言うクラス指定になっています。 >引数とクラス名のスペースを忘れないようにしましょう。 は、ANo.1のかたの解答に付いている補足で、javaコマンドで実行する際にクラス名と引数の間にスペースが入っていないようでしたので、そちらを指摘させていただきました。 2.Ano.5の部分に付いている補足でのエラーの意味は、Javaコマンドで指定されたクラスが見つからないという物です。 クラスの指定の際に、パッケージが入力されていないためだと思います。 java myweb.keisanmain.Mainekeisan 1 * 2 のように入力されれば、また違った結果になると思います。 3.ANo.6の方に対する補足でのエラーは、パッケージの宣言がimport宣言よりもあとにあるからかな?と思います。 まずpackage 宣言、次にインポート宣言をしてください。 そもそも、同じパッケージの場合はインポートは不要だったと思います。 以上です。

rubi7
質問者

補足

kscKaneさん。お返事ありがとうございます。 今回は詳しく貴方様に書いてない補足までも ご説明していただき心がじーんとうれしくなり ました。本当にありがとうございます。 さて疑問点があります。 1.はありがとうございます。よくわかることができました。 2と3がよくわかりません。アドバイスいただけませんか。 実行してみましたが自分なりに本を調べてみたのですが よくうまくいきません。どうかよろしくお願い申し上げます。 以下に詳細に書きますのでどうか見にくいとは思いますが お時間があるときにお返事を下さい。また他の方わかる方 どうかアドバイス下さい。 2.のことです。 ソースは私のNo5に対する補足にあります。 C:\myweb\keisanmain>javac -d ./ Mainkeisan.java とC:\myweb\keisanmain のディレクトリのディレクトリでjavac -d ./ Mainkeisan.javaとコンパイル。 アドバイス通りに実行してみました。 C:\>java myweb.keisanmain.Mainekeisan 1 "*" 2 Exception in thread "main" java.lang.NoClassDefFoundError: myweb/keisanmain/Main ekeisan やはりここでエラーが出てしまいますksckaneさんのアドバイス通りではないのでしょうか。 解釈が間違えていたらご指摘お願い申し上げます。 他では出来るかぎりどうにか苦肉の策でどうにか 実行してみました。パッケージの実行がうまくいかなかったので C:\myweb\keisanmain のディレクトリで  コンパイル方法として javac -d ./ Mainkeisan.java で作成したところMainkeisan.classがC:\myweb\keisanmain\myweb\keisanmain のディレクトリ構成で おこっなったらやはりそんなクラスがないとおこられました。以下です。 C:\myweb\keisanmain\myweb\keisanmain>java Mainkeisan 1 "*" 2 Exception in thread "main" java.lang.NoClassDefFoundError: Mainkeisan (wrong nam e: myweb/keisanmain/Mainkeisan) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12 4) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 3.のことはご指摘の結果、エラーがとれました。でも 実行の段階でエラーが出ます。なぜかよくわかりません。 ソースは私のNo6の補足にあります。 C:\myweb>java goo.Mainkeisan 1 Exception in thread "main" java.lang.NoClassDefFoundError: goo/Mainkeisan

  • isi0611
  • ベストアンサー率34% (46/134)
回答No.6

こんばんは~! 単純にこんな感じではダメなんですかね。 意図が違ってたらすいません。 public class Mainkeisan { public static void main(String[] args) { try { System.out.println(Integer.parseInt(args[0]) * Integer.parseInt(args[1])); } catch(Exception e) { System.out.println("数字を入力してください。"); System.out.println("入力例:java Mainkeisan 1 1"); } } }

rubi7
質問者

補足

isi0611さん。初めまして!よろしくお願いします。 ソースありがとうございます。 伺いたいことがあるのですが実行すると次の エラーがでてしまいます。どうやってもとれません。 ディレクトリ構成はC:\myweb\goo にMainkeisan.java を入れました。gooはパッケージです。 もしわかりましたら教えていただけませんか。 ーーーーーーーーーーーーーーーーーーーーimport goo.*; package goo; public class Mainkeisan { public static void main(String[] args) { try { System.out.println(Integer.parseInt(args[0]) * Integer.parseInt(args[1])); } catch(Exception e) { System.out.println("数字を入力してください。"); System.out.println("入力例:java Mainkeisan 1 1"); } } }  エラー c:\myweb>javac goo\Mainkeisan.java goo\Mainkeisan.java:2: 'class' または 'interface' がありません。 package goo; ^

関連するQ&A

  • ビット演算子が使えない。

    こんにちは現在Javaをやっているいのですが、 //計算を行うプログラムです。 public class keisan{ public static void main(String args[]){ int num1=10; int num2=15; System.out.println("num1とnum2にいろんな演算を行っています。"); System.out.println("num1+num2は"+(num1 | num2)+"です。"); } } コンパイルはできましたが、 Exception in thread "main" java.lang.NoClassDefFoundError: keisan[ とエラーがでてきます。どうしたら良いのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • 前に実行できたプログラムが全て実行できなくなりました。

    コマンドプロンプトを使って、プログラムを実行しようとしてます。 例で 「Aisatsu.java」というプログラムをやってみると C:\WORK>java Aisatsu.java C:\WORK>java Aisatsu Exception in thread "main" java.lang.NoClassDefFoundError: Aisatsu といったエラーが出てきます。どうして今まで出来ていたプログラムが出来なくなっているのでしょうか?

    • ベストアンサー
    • Java
  • 構文がエラーになる

    Exception in thread"main"java.lang.NoClassDefFoundError という文章でエラーになります。 import java.io.*; class Sample34 { public static void main (String args[])throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 1){ System.out.println("1が入力されました。"); } else if(res == 2){ System.out.println("2が入力されました。"); } else{ System.out.println("1か2を入力してください。"); } } }

  • 超初心者です。教えてください。

    初心者です。javaのマニュアル書に書いてある class Hello{ public static void main (String[] args){ System.out.println("Hi! Hello!!"); } }   はコンパイルすることができたのですが、実行すると Exception in thread "main"java.lang.NoClassDefFoundError: Hello という文書が出てきますどうすればいいのでしょうか。教えてください。

    • ベストアンサー
    • Java
  • コマンドライン引数

    すいません、java初心者です。 コマンドライン引数として渡されたファイルを16進表示したいのですが、右のテキスト部分の文字のあいうえおなどの日本語部分が出てきこず途中で止まってしまいます・・・ 何が悪いか、改善方法教えてください!! 宜しくお願い致します!!!! import java.io.*; class Lesson1{ static char ch[]= {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' }; //16種類 static int c1,c2; public static void main(String args[]) { System.out.println("Address 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF"); System.out.println("--------+--------------------------------------------------+------------------"); if(args.length !=1){ System.out.println("ファイル名を指定してください。"); //ファイルがついてない場合。 System.exit(1); } try { //入力ストリームを作成。 FileInputStream fis= new FileInputStream(args[0]); //ファイル読み取り //InputStreamReader in = new InputStreamReader(fis, "SJIS"); BufferedReader br= new BufferedReader(new FileReader(args[0])); // 読込みループ。 int d=0; int c; // 読み込んだものをsに入力。 String str; int n = 0, k = 16; //0~Fまでの数字 String s=""; while( (c = in.read()) != -1) { if( k > 15 ) { System.out.println(" "+s); //右のパーツ s = ""; System.out.printf("%08X: ",n); //Address k = 0; } d++; //バイト数表示 n++; k++; // 整数cを上位4ビットc1、下位4ビットc2に分解。 c1 =c/16; c2 =c%16; System.out.print(" " + ch[c1] + ch[c2]); //真ん中のパーツ。 //System.out.printf(" "+Integer.toHexString(c)); if( (c<= 0x00 || c<= 0x19) ) { //右のパーツ(表示できない場合 s = "."; } else{ //表示できる場合 s =s+(char)c; } } //String s1=String.valueOf(c); //int len =s.length(); System.out.println(""); System.out.println(""); System.out.println("ファイルサイズは"+d+"byteでした。"); // 入力ストリームを閉じる。 in.close(); } catch ( IOException e ) { System.out.println("ファイルの読み込みに失敗しました。"); //ファイル名が正しくない場合。 } } } 実行結果 Address 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF --------+--------------------------------------------------+------------------ 00000000: 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 1234567890abcdef 00000010: 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 ghijklmnopqrstuv 00000020: 77 78 79 7A 41 42 43 44 45 46 47 48 49 4A 4B 4C wxyzABCDEFGHIJKL 00000030: 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5AException in thread "main" j ava.lang.ArrayIndexOutOfBoundsException: 772 at Lesson1.main(Lesson1.java:55)

    • ベストアンサー
    • Java
  • javaコマンドが実行できません。

    C:\Work\workspace\createMaster\src\main\webapp\WEB-INF\classes>java C:\Work\workspace\createMaster\src\main\webapp\WEB-INF\classes\createMaster\util\M ain.class と実行すると Exception in thread "main" java.lang.NoClassDefFoundError: C:\Work\workspac e\createMaster\src\main\webapp\WEB-INF\classes\createMaster\util\Main/class とExceptionが発生します。 .class拡張子を除いて C:\Work\workspace\createMaster\src\main\webapp\WEB-INF\classes>java C:\Work\workspace\createMaster\src\main\webapp\WEB-INF\classes\createMaster\util\M ainと実行すると Exception in thread "main" java.lang.NoClassDefFoundError: C:\Work\workspac e\createMaster\src\main\webapp\WEB-INF\classes\createMaster\util\Main とExceptionが発生します。 classファイルはC:\Work\workspace\createMaster\src\main\webapp\WEB-INF\classes\ createMaster\util\Mainに存在します。 javaコマンド命令文の利用方法が分からなくて投稿します。 お答え宜しくお願いします。

  • コマンドライン引数

    『やさしいJava』で勉強してます。 import java.io.*; class Sam3 { public static void main(String args[]) { if(args.length != 1){ System.out.println("ファイル名が違うよ。"); System.exit(0); } try{ BufferedReader br= new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ System.out.println(str); } br.close(); }catch(IOException e){ System.out.println("エラー"); } } } で、コンパイルして、 Sam3 test2.txt と実行しても 「準備ができていません。読み取り中・・・」 としかでません。 なにか間違いがあるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • 足し算するプログラム

    タイトルの通りですが足し算をするプログラムを書いてみました。 第一引数を第二引数を足し算するのですが引数に「001」や「002」などの数字が入力された時に足し算した結果として素直に「00*」と足し算が出来ません。何かいい方法は無いでしょうか?教えてください。 import java.text.*; class Tashizan { public static void main(String[] args) { try { if(args.length == 0) { System.out.println("引数を整数値で入力して下さい。"); } else if(args.length == 1) { System.out.println("引数を整数値で2つ入力して下さい。"); } else if(args.length == 2) { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); if(a <= 999999999 && b <= 999999999) { int wa = a + b; System.out.println(a + "+" + b + "の和は" + wa + "です。"); } else { System.out.println("入力した桁数を9桁以下か確認してください。"); } } else { System.out.println("引数は整数値で2つ入力して下さい。"); } } catch(NumberFormatException nfe) { System.out.println("整数値を2つ入力して下さい。"); } catch(Exception e) { System.out.println(e + "エラー発生!処理を終了します。"); } } }

    • ベストアンサー
    • Java
  • コマンドプロンプトのエラーメッセージが理解できません

    今晩は、java. 初心者です宜しくお願いします。 Win MEです。 Java のコードをメモ帳で作成し、DOSで走らせたら以下の様なエラーメッセージが表示されました。 どのような意味でしょうか。 「Exception in thread "main" java.lang.NoClassDefFoundError: DisplayFloat」 「DisplayFloat」がプログラムの名前です。 これはよく分からないのですが、SDKをつんでいないということでしょうか。

  • Javaのプログラムについて教えて下さい

    //Sample.java class Sample void methodA(int temp) if(temp == 0) String str = new String("Exception"); Integer.parseInt(str); else if(temp == 1) int[] array = new int[temp]; else Exception exc = new Exception(); throw exc; //SampleMain.java class ExceptionMain public static void main(string[] args) Sample sam = new Sample(); Int temp = Integer.parseInt(args[0]); Sam.method(temp); } } このプログラムの場合、ExceptionMainに新たにコードを加えて、コマンドライン引数が0,1,その他の場合に例外メッセージを出力するプログラムを教えて下さい。

    • ベストアンサー
    • Java