• ベストアンサー

すいません。超初心者です…。

今、プログラミングの練習をしています。言語はjavaです。独学なので、立ち止まったら対処ができません。一応、本の通りにやっているつもりなのですが… 本を書き写した所、コンパイル(コンパイラ?、インタープリタ?)が出来ません。 お分かりの方がいらっしゃいましたら、是非ご教授下さい。お願いします。 class Test{ int i = 10; int j = i * 2; int sum(int m){ return j + m; } int sum3(int m,int n){ int k = sum(3); return m + n + k; } } public class sample31{ public static void main(String[] args) { Test t = new Test(); System.out.println("tオブジェクトのメソッド" + "sum3(1,5)の結果:" + t.sum3(1,5)); } } ちなみにエラーの文は、 C:\Source>java sample31 Exception in thread "main" java.lang.NoSuchMethodError: Test.sum3(II)I at sample31.main(sample31.java:17) という風に出ています。(意味は分かりませんが…)

  • Java
  • 回答数5
  • ありがとう数1

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

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

提示されているプログラムをそのままコピーして、 コンパイルして、実行しましたが、 >tオブジェクトのメソッドsum3(1,5)の結果:29 とちゃんと実行できましたよ。

その他の回答 (4)

回答No.5

以下のサイトの(reply 9 of 9)にもある通り、classpathの方ではなくて、pathの設定であるように思います。 http://forum.java.sun.com/thread.jspa?threadID=516207&messageID=2460058 以下のサイトを参考に、もう一度確認をしてみてください。(セミコロンで正確に区切られているのかとか、半角スペースが余分に入っていないのかどうか、など。) http://tyche.pu-toyama.ac.jp/~ko-ji/java-in/ http://www.wikiroom.com/java/?path,classpath

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.4

ごめんなさい、早とちりしました。  java.lang.NoSuchMethodError だったんですね。  Test.sum3(II)I がない、と言ってきてますが、ためしに上記プログラムをコンパイル して、実行しましたが、問題なく実行できました。  C:\java>javac sample31.java  C:\java>java -classpath . sample31  tオブジェクトのメソッドsum3(1,5)の結果:29 同一のファイル内に全てのクラスが書かれていますので、 不整合がおきることも考えにくいですが、どこかで、 別のTestクラスを読み込んでしまっているのでしょうか?

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

変ですね。 JDK1.5 ですが、問題なくコンパイル&実行できました。 質問文で書かれているプログラムを sample31.java で保存して javac sample31.java でコンパイル java sample31 で実行しているのですよね?

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

コンパイルは通っているようですので、CLASSPATH の設定ではないでしょうか。 ためしに、  java -classpath . sample31 と打ってみるとどうなるでしょう。 (classpathの後のピリオドは、コマンドを打ち込んだ、現在いる場所という意味です)

関連するQ&A

  • 「これならわかるJAVA入門の入門 坂下夕里 P186,187」につい

    「これならわかるJAVA入門の入門 坂下夕里 P186,187」についての質問です。 http://up.mugitya.com/img/Lv.1_up121711.jpg http://up1m.ko.gs/src/koups217.jpg http://josup.xrea.jp/josup/src/up1248.jpg http://219.94.194.39/up/src/f3236.jpg 【オーバーロードを使ったプログラム】 class Test { int sum(int i, int j){ return i + j; } int sum(int i,double d){ return (int)(i + d); } } public class sample35 { public static void main(String[] args) { Test test = new Test(); System.out.println(test.sum(1,2)); System.out.println(test.sum(2,2.5)); } } たとえば、2番目のメソッドの戻り値をdouble型にしたメソッドを オーバーロードしようとするとどうなるでしょう? double sum(int i, double d){ return i + d; コンパイル時にエラーになります。まったく同じ引数定義の場合は、 処理内容や戻り値が違っても複数定義することはできません。 【質問】 「まったく同じ引数定義の場合」とはどういう事でしょうか? どことどこが同じなのでしょうか。

    • ベストアンサー
    • Java
  • JAVA初心者です。

    以下の文法でコンパイルエラーが出ます。 添削をお願いします。 import java.util.Random; public class Test{ public static void main(String[] args){ int n; for (n = 0; n < 200; n++){ int i; for (i = 0; i < 38; i++) { Random rnd = new Random(); int ran = rnd.nextInt(10); System.out.print(ran); System.out.print(" "); for (t = 0; t < 200; t++) } System.out.println(); } } }

    • ベストアンサー
    • Java
  • Cのソースコードについて

    #include<stdio.h> int main(void) { long a[6000],sum[6000],max=0; int i,j=0,n,m; for (m = 0; m <= 6000; m++) sum[m] = 0; for (i = 0;; i++) { scanf_s("%ld", &a[i]); if (a[i] > 0) sum[j] += a[i]; else if (a[i] < 0) { j++; sum[j] = -1; j++; } else break; } for (n = 0; sum[n] == 0; n++) { if (max < sum[n]) max = sum[n]; } printf("%ld",max); while(1){} return 0; } こんなコードを書いたのですが 答えが常に0になってしまいます。 原因がはっきりしないので教えてください 使用言語はCです

  • 素数のプログラムについて教えてください

    3000000以下の素数を降順に表示するプログラムをつくりたいのですが、int mainのところがわかりません。 #include <iostream> int PRIME(int m) int main() { int m, j; for(m = 3000000; m <= 2; m--) } int prime( int n ) { int i; for ( i = 2; i < n; i++ ) { if ( n % i == 0 ) { return 0; } } return 1; } 誰か教えていただけないでしょうか? よろしくお願いします。

  • C言語でmからnまでの合計を求めるプログラム

    これで動かないのですが、何が違っているのか、教えていただけますか。 #include <stdio.h> int main(void) { int m, n, sum, i, w ; printf("mからnまでの合計を求めます\n\n"); printf("m >> "); scanf(" %d", &m); printf("n >> "); scanf(" %d", &n); sum=0; if(m>n){ w=m; m=n; n=w; } sum=0; i=m; while(i<=n){ sum=sum+i; i=i+1; } printf("%d から %d の合計 = %d\n",m,n,sum); return 0; }

  • プログラムの合体。

    jump7799_4836さん 2018/7/2103:34:44 public class Test2 { public static int メソッド () { System.out.println("メソッド()が呼ばれました"); return 0; } public static int メソッド (int i) { System.out.println("メソッド(int i)が呼ばれました"); return i; } public static int メソッド (int i, int j) { System.out.println("メソッド(int i, int j)が呼ばれました"); return i; } public static int メソッド (short s) { System.out.println("メソッド(short s)が呼ばれました"); return s; } public static int メソッド (double d) { System.out.println("メソッド(double d)が呼ばれました"); return (int) d; } } public メソッド class Test2 { public メソッド static void main(String[] args) { Test2.メソッド (); Test2.メソッド (1); Test2.メソッド (1,2); Test2.メソッド (1.1); Test2.メソッド ((short) 1); Test2.メソッド ((double)1); } } kouzou@GD348ZZD9:/WORK$ javac Test2.java Test2.java:29: エラー: class、interfaceまたはenumがありません public メソッド class Test2 { ^ Test2.java:30: エラー: <identifier>がありません public メソッド static void main(String[] args) { ^ エラー2個 2つのプログラムが合体することってあるのですか? いつもすみません。 解説のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • 関数のパラメータを配列に格納したいのですが

    #include<stdio.h> #include<stdlib.h> int func(int, int, int, int); int main(void) { int a = 3, b = 4, c = 5, d = 6; int sum; sum = func(a, b, c, d); printf("合計は%dです。\n", sum); return EXIT_SUCCESS; } int func(int m, int n, int o, int p) { int Hairetu[4]; int Sum = 0; int i; /* ここで、Hairetuにm, n, o, pを格納したい */ for(i=0; i<4; i++) Sum += Hairetu[i]; return Sum; } 例えばこのようなプログラムがあった時、m, n, o, pの値をHairetuに格納するには、どのようにすればよいのでしょうか。 分かりにくい文章ですが、どうかよろしくお願い致します。

  • c言語 行列のn階乗のプログラム

      1 2 -1 D= 3 0 -2   -1 1 2 の3次正方行列のn乗を計算するプログラムを作成しています。 いろいろと試してみましたがうまくいきません。 どなたか教えていただけるとうれしいです。 よろしくおねがいします。 #include <stdio.h> int main(void) { int a[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} }; int b[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} }; int s[3][3]; int m,n; int i,j,k; printf("[A]^n;n = ");scanf("%d",&n); for (m=2;m <= n;m++){ for (i=0;i<3;i++){ for (j=0;j<3;j++){ s[i][j] = 0; for(k=0;k<3;k++){ s[i][j] =s[i][j] + a[i][k] * b[k][j]; } } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ b[i][j]=s[i][j]; } } printf("%3d",s[i][j]); putchar('\n'); } return (0); }

  • ポインタ・構造体・並び替え

    http://www9.plala.or.jp/sgwr-t/c/Q/ens15-3.html ↑のページの問2のプログラムを #include <stdio.h> typedef struct data{ int number; int subject[4]; int sum; }data_t; int get_sum(data_t); int main(void) { data_t st[5]={{1001,85,74,63,90}, {1002,78,65,70,62}, {1003,89,92,88,76}, {1004,32,48,66,25}, {1005,92,76,81,98}, }; data_t *p; data_t q; int i,j; for(i=0;i<5;i++) { p=&st[i]; p->sum=get_sum(st[i]); } for(i=0;i<3;i++) { for(j=0;j<3-i;j++) { if((p+j)->sum<(p+j+1)->sum) { q=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=q; } } } for ( i = 0; i < 5; i++ ) { printf( "%4d ", ( p+i )->number ); for ( j = 0; j < 4; j++ ) printf("%4d ", ( p+i )->subject[j] ); printf( " %4d\n", ( p+i )->sum ); } return 0; } int get_sum(data_t data) { data_t *p=&data; int i,sum=0; for(i=0;i<4;i++) { sum+=p->subject[i]; } return sum; } と、作ってみたのですが、最高点の1005が一番上に来るけど、それ以外が正しく表示されません。 どこを直せばいいでしょうか? よろしくお願いします。

  • フローチャートについて

    import java.util.Scanner; class Test{ public static void main(String[] args){ Scanner stdIn = new Scanner(System.in); System.out.println("1からnまでの和を求めます。"); System.out.print("nの値:"); int n= stdIn.nextInt(); int sum=0; int i=1; while(i<=n){ sum +=i; i++; } System.out.println("1から"+n+"までの和は"+sum+"です。"); } } 1からnまでの和を求めるプログラムで、この画像はそのフローチャートなのですが、 参考書にはsum+i→iと書かれています。 これってsum+i→sumの間違いですか? また、初期化や代入のフローチャートは 代入したい値を左に書いて右矢印にして右に変数を書くのが一般的なのでしょうか?

    • ベストアンサー
    • Java