• ベストアンサー

コマンドプロンプトから数値で引数を与える時に出るエラーの対処法について

題名通りなのですが、 コマンドプロンプトで Java Comc1 10 などと入力した際に引数をきちんと計算してくれる プログラムを組みたいのですが、エラーが出てしまいます。 まずはソースですが、以下のようなものを記述しました。 class Comc1{  public static void main(int[] args){   class InnerClass5{    int a=20;    int b=50;    void method1(int num){ System.out.println((a*b)/num);    }   }   InnerClass5 ic5 = new InnerClass5();   ic5.method1(args[0]);  } } コンパイルは問題なく行えるのですが、 いざ実行した際に Exception in thread "main" java.lang.NoSuchMethodError: main といったエラーが出てしまい、動かすことが出来ません。 どなたか分かる方がいましたら教えていただけるとありがたいです。 よろしくお願い致します。

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

  • ベストアンサー
回答No.2

既存のmainメソッドをあまり触りたくない場合は、以下のようなmainメソッドを追加してオーバーロードしちゃえばいいと思う。  static public void main(String... irohanihoheto){   int[] args_int = {Integer.parseInt(irohanihoheto[0])};   Comc1.main(args_int);  } もちろん、どこに追加すればいいかまではいちいち書かなくてもいいよね。 ("1.5.0_11"にて動作確認済。)

newjava
質問者

補足

回答ありがとうございます。 無事動作確認をすることができました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#49428
noname#49428
回答No.1

public static void main(String[] args) が正解です。 mainの引数の型を変えてはいけません。

newjava
質問者

お礼

回答ありがとうございます。 mainメソッドは引数の型を変えてはいけないんですね・・・。 String型に直してもエラーは出てしまいましたが、 今後も考えるといい勉強になりました。 その後、mainメソッドの引数をString形に直し、 Integer.parseIntを使用することでなんとか動作を確認できました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連する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
  • コマンドプロンプトを使用して。

    よろしくお願いいたします。ネット上にあったサンプルコードをコンパイルし、実行したところ 「Exception in thread "main"java.lang.NoSuchMethodError: main」というメッセージが表示されたのですがどういうことなのでしょうか? コードは以下の通りです。わかる方いましたらよろしくお願いいたします。 public class Sample { public static void main(String[] args1,String[] args2) { MyObject object = new MyObject(); object.setName("mikel"); String s = object.getName(); System.out.println(s); } } class MyObject { String name; public void setName(String str) { name = str; } public String getName() { return name; } }

    • ベストアンサー
    • Java
  • コマンドライン引数の掛け算のプログラムを教えて下さい。

    コマンドライン引数で*で掛け算するプログラムを作成しています。 「"*"」の入力なしに 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); } } }

    • ベストアンサー
    • Java
  • コマンドライン引数を用いて。

    コマンドライン引数を用いて足し算をさせるプログラムです。 class goukei{ public static void main(String args[]){ int i, count; int sum = 0; int a[]; count = args.length; for(i=0; i<args.length; i++){ int arg_i = Integer.parseInt(args[i]); sum = sum + arg_i; } System.out.println("引数の数は" + count); System.out.println("合計は" + sum); } } と考えたのですが、もっとこうしたほうがいいという部分があれば教えてください。 一応これでできているとは思うのですがイマイチ自信がありません・・・。

    • ベストアンサー
    • 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
  • コマンドライン引数の*(アフタリスク)の表示について教えて下さい

    皆様どうぞよろしくお願い申し上げます。アドバイス下さい。 java言語で質問です。調べたかぎりわからないことが起こりました。次のものです。コマンドライン引数で引数1は数字、引数2は数字、引数3は* で表示させるプログラムを作りました。引数3番目の演算子*(アフタリスク)を表示する場合にうまく表示できません。 C:\java>java test 2.0 15.0 * 2.0 15.0 Calculation.class ←表示されません。 プログラムは以下のものを作りました。見てください。 /** * 実行クラス:引数テストクラス */ class test{ public static void main(String args[]) { //引数を取得 double num1 = Double.parseDouble(args[0]); //引数1(数値) double num2 = Double.parseDouble(args[1]); //引数2(数値) String kigou = args[2]; //引数3(計算記号) //画面に出しています。 System.out.println(num1); System.out.println(num2); System.out.println(kigou); } }

  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 public static void main(String[] args)は何の意味があるのですか? http://www.task-notes.com/entry/20150930/1443582000 などを見てもイマイチ納得がいきません。 下記のプログラムでは public static void main(String[] args)がないためにエラーになりました。 解らないため適当な箇所に付け足したら、また異なったエラーになりました。 ;を付け足すとまた別のエラーが出ます。 ご多忙中恐れ入ります。 アドバイスのほど宜しくお願い申し上げます。 class Hero { public static void main(String[] args) private int point; Hero(int p) {point = p; } int getPoint() { return point; } void addPoint(int p) { point += p; } } コンパイルエラー C:\JAVA>javac Hero.java Hero.java:3: エラー: ';'がありません public static void main(String[] args) ^ エラー1個

  • NoSuchMethodErrorが解決できません。

    実行時エラーNoSuchMethodErrorが出て困っています。 どこを修正すればいいのでしょうか? class A implements Runnable{ int x; int y; public void run(){ for(int i = 0;i < 100;i++){ x++; y++; System.out.println("x="+x+"y="+y); } } } class B{ public static void main(String args[]){ new Thread(new A()).start(); new Thread(new A()).start(); } }

    • ベストアンサー
    • Java
  • コンパイル時のエラーについて

    Java超初心者の者です。 下記のコードどこか間違っていますか? class Sample4 { public static void main(String args[]) throws IOException { System.out.println("いくつまでの合計を求めますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int sum = 0; for(int i=1; i<=num; i++){ sum += i; } System.out.println("1から" + num + "までの合計は"      + sum + "です。"); } } テキスト通りに入力したつもりなのに何度確認して入力し直しても、 『'class'または'interface'がありません。』というエラーが 出てしまうのですが・・・ 色々ネットで検索して調べたのですが、分らなくて。

    • ベストアンサー
    • Java
  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 初心者向けのJAVAの件。 コンパイルが下記の通りになりました。 どこが間違っているのでしょうか? アドバイスのほど、宜しくお願い申し上げます。 C:\JAVA>javac Lesson09.java C:\JAVA>java Lesson09 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Lesson09.main(Lesson09.java:4) コード public class Lesson09 { public static void main(String[] args) { int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); java.awt.Point point = new java.awt.Point(); point.setLocation(x, y); System.out.println("X, Y座標をフィールドで参照します(int)"); System.out.println("X 座標:" + point.x); System.out.println("Y 座標:" + point.y); System.out.println("X, Y座標getメソッドで参照します(double)"); System.out.println("X 座標:" + point.getX()); System.out.println("Y 座標:" + point.getY()); } }

    • ベストアンサー
    • Java