![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?5a7ff87)
コマンドライン引数で*で掛け算するプログラムを作成しています。
「"*"」の入力なしに
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);
}
}
}
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");
}
}
}
この回答への補足
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;
^
No.5
- 回答日時:
ANo.4の回答の補足より
Double型で取得→計算→出力
とされたいのではないかと推察いたしました。
(違っていたらすみません)
ANo.3の回答と同じく型変換で簡単にできます。
Double result = Double.parseDouble(args[0]) * Double.parseDouble(args[2]);
System.out.println(result);
上記記述で行えます。
なお、記述の意図はわかりませんが、エラーが発生するのはif文の構文が間違っているからです。
誤:if(a == b) || (b == c){}
正:if(a == b || b == c){}
補足ですがここもおかしいですね。
>Integer b = new Integer("*");
参考URLにJavaの説明がわかりやすく記載されているサイトを紹介させていただきましたので、こちらを参考にされてみてはいかがでしょうか?
参考URL:http://takeoba.cool.ne.jp/java/index.htm
この回答への補足
h-rさん初めまして!!素敵なサイトの紹介ありがとうございます。よくこれから活用したいと思います。
伺いたいのですがアフタリスク「*」でどうしても
掛け算したいのですがまずはコマンドライン引数
1*2 →args[0] args[1] args[2]とセットして
掛け算するプログラムを作成して実行してみましたが
バグがでます。どこかおかしいか見てくださいませんか。他にわかる方もどうか教えて下さい。
作成したプログラム
ーーーーーーーーーーー
package myweb.keisanmain;
class Mainkeisan{
実行結果C:\>java Mainekeisan 1 * 2
Exception in thread "main" java.lang.NoClassDefFoundError: Mainekeisan
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 = new Integer(args[0]);
Integer b = new Integer(args[1]);
Integer c = new Integer(args[2]);
if(a == b || b == c) {
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{
}
}
}
}
}
実行結果がバグがでます。
C:\>java Mainekeisan 1 * 2
Exception in thread "main" java.lang.NoClassDefFoundError: Mainekeisan
No.4
- 回答日時:
#1>c:\myweb\keisanmain>java myweb.Keisanmain.Keisan 1 * 2
今いるディレクトリからパッケージ階層をたどろうとするので、
Cドライブの直下で
c:\>java myweb.keisanmain.Mainkeisan 1 "*" 2
とします。
* は、(少なくとも)windows では、特別な記号なので、エスケープする必要があります。
数値の取り出しについては例えば、以下のようにして下さい。
double num = 0.0;
Integer a = new Integer(args[0]);
Integer b = new Integer(args[2]);
num = a * b;
System.out.println(num);
この回答への補足
お返事ありがとうございます。
BULUPIXYさんのソースを参考にして
「*」はアスタリスクなので「"1""*""2"]
というアルゴリズムで作成したらコンパイルエラー
でて調べたのですがどうやってもとれません。
わかる方どうか教えて下さい。
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 = new Integer(args[0]);
Integer b = new Integer("*");
Integer c = new Integer(args[2]);
if(a == b) || (b == c) //(1)ここでコンパイラエラーが起こります。
/**C:\myweb\keisanmain>javac -d ./ Mainkeisan.java
Mainkeisan.java:22: 式の開始が不正です。
if(a == b) || (b == c) */
^
double d = a.doubleValue();
double e = c.doubleValue();
System.out.println(num = d * e);
}
}
}
No.3
- 回答日時:
補足です。
Integer a = new Integer("args[0] * args[2]");
の部分は、
"args[0] * args[2]"
と言う文字列をInteger型に変換しようとしています。
ここでは、String型の引数を一つ一つ数字型に変換してから掛け合わせる、と言う処理をしなければ行けないと思います。
自分なら、
int result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
のような形にしますかね?
こんばんわ。kscKaneさん詳しい補足をまたまた
ありがとうございます。
なるほど!!文字を数値につっこんでも無意味です
よね!!ありがとうございます。
No.2
- 回答日時:
まず、パッケージ宣言が"myweb.keisanmain"になっているので、
コマンドラインから実行する際は、カレントディレクトリの下に
\myweb\keisanmain
というディレクトリがくるところに移動する必要があるのでないかな?と思います。
この場合は、C:ドライブの直下ですね。
なので、
"CD \"
と入力して、プロンプトが
C:\>
と表示する状態にして、そこで実行してみてください。
また、今回の実行コマンドが引数との間にスペースがないため、
Mainkeisan1
と言うクラス指定になっています。
引数とクラス名のスペースを忘れないようにしましょう。
この回答への補足
kscKaneさん。早速お返事ありがとうございます。そして詳しい説明ありがとうございました。
CDコマンド存在すら知りませんでしたので勉強
になりました。
ところで以下のkscKaneの説明を
ソースに反映したいのですが解釈がよくわからなく
作れません。もう少し具体的にアドバイス
いただけませんか。是非お願い申し上げます。
>また、今回の実行コマンドが引数との間にスペースがないため、
Mainkeisan1
と言うクラス指定になっています。
引数とクラス名のスペースを忘れないようにしましょう。
No.1
- 回答日時:
NoClassDefFoundError
になるのは、Mainkeisan なのに、myweb.Keisanmain.Keisan とよびだしているからでしょうね。
また、package myweb.keisanmain となってるからパッケージ名も違いますね。
new Integer("args[0] * args[1]");
の部分も文字列としてargs の内容じゃなく、単なる変数名の文字列ですよね。
それに、args[1] は、 * じゃないでしょうか?
この回答への補足
BULUEPIXYさん。いつもお返事ありがとう
ございます。毎回丁寧でうれしいです。
パッケージは「C:\myweb\keisanmain」のディレクトリ
構成なのでいいと思うのですが。。。
エラーがやはりでます。
c:\myweb\keisanmain>javac -d ./ Mainkeisan.java
c:\myweb\keisanmain>java myweb.keisanmain.Mainkeisan1 * 2
Exception in thread "main" java.lang.NoClassDefFoundError: myweb/keisanmain/Main
keisan1
ソースは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[2]");
double b = a.doubleValue();
System.out.println(b);
}
}
}
と配列のところだけ変更しました。
是非お手数をおかけしますがわかる方教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse(JAVA)のデバッグで他...
-
Javascriptの値をJava(JSP)へ渡...
-
split関数で区切り文字がない場合
-
コミット前の更新データをチェ...
-
JAVAにのeclipseに関する質問で...
-
jasper.exceptionとは?
-
Worksheet_Changeが動かない
-
eclipseでスタックサイズを変更...
-
「ワークスペースをビルド中」...
-
javaでプログラムを途中から始める
-
eclipse実行ができない
-
Javaで年月の取得(YYYYMM形式で)
-
Spyder上のPythonでinputが実行...
-
eclipseのjavaを実行できない
-
AccessVBAで、ホームページの内...
-
C++ wstringのreplace()が上手...
-
ExcelVBA グラフの軸ラベル ユ...
-
Microsoft Visual C# Express E...
-
NoClassDefFoundError: javax/m...
-
Javascriptのパーミッション
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse(JAVA)のデバッグで他...
-
split関数で区切り文字がない場合
-
JAVAにのeclipseに関する質問で...
-
Javascriptの値をJava(JSP)へ渡...
-
jasper.exceptionとは?
-
「ワークスペースをビルド中」...
-
eclipseでスタックサイズを変更...
-
eclipseのjavaを実行できない
-
Javaで年月の取得(YYYYMM形式で)
-
コミット前の更新データをチェ...
-
eclipse実行ができない
-
Eclipseで実行>Javaアプリケー...
-
エクリプスで実行時、最新クラ...
-
Eclipse 実行→Javaアプリケー...
-
eclipseで「サーバーで実行」表...
-
Google Colabでimport soxが出...
-
環境変数設定で
-
Javascriptのパーミッション
-
Spyder上のPythonでinputが実行...
-
NoClassDefFoundError: javax/m...
おすすめ情報