• ベストアンサー

プログラムミス?

下のプログラムを実行したときにエラーが出るんですけどどこが間違っているかどなたか教えて下さい。 public class Point{ public int x; public int y; public static void scale(int s){ x*= s; y*= s; } public static void scale(Point p,int s){ p.x *= s; p.y *= s; } }

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

とりあえずアドバイスとしては ・エラーメッセージを読むくせをつけましょう。Javaのエラーメッセージはかなりわかりやすいです。 ・コンパイルエラーと実行時エラーの違いを覚えましょう。 ・staticと非staticの違いを覚えましょう。 ちなみに間違いは >public static void scale(int s){ で、staticは要りません。 あと、ソースがこれだけだとmainメソッドがないので動きません。

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

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

No2の方のご指摘に加えて、 x,yの型宣言は有るけど、値を入れてないと計算には使えません。 *=の意味をよっく考えてから使って下さい。 staticな関数から、インスタンス変数を参照することも出来ません。 staticである必要はなさそうです。 基本文法について、しっかり入門書を読み直した方がいいです。 http://www.nextindex.net/java/index.html

参考URL:
http://www.nextindex.net/java/index.html
全文を見る
すると、全ての回答が全文表示されます。
回答No.1

まずはどんなエラーが出るか補足して下さい。

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

関連するQ&A

  • コンパイルされない理由

    下のプログラミングをコンパイルするとエラーになるのですがどうしてですか?Javaの仕様だからといえばそれまでなのですが… また、どこを直したらよいのか教えてください。 class Point{ int x; int y; static void setPosition(int x,int y){ this.x = x; this.y = y; } }

  • メソッド

    public class Point{ public int x; public int y; public void swap(int s){ int x = s * y; y = s * x; this.x = x; } public void swap2(int s){ int x = s * y; y = s * this.x; this.x = x; } public static void main(String[] args){ Point pt = new Point(); pt.x = 3; pt.y = 4; pt.swap(2); System.out.println(pt.x + " " + pt.y); pt.swap2(3); System.out.println(pt.x + " " + pt.y); } } このプログラムでswapメソッドとswap2メソッドってどう違うんですか?

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

    いつも大変お世話になりありがとうございます。 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個

  • 初心者です。 配列のエラーがどうしても解決できません。 誰か助けてください・・・

    魔方陣のプログラムを考えて書いてみましたが、 エラーが出てしまい実行することができません。 class mahoujin{ public static void main(String args[]){ int n=3; int a[][] = new int[3][3]; int x=0; int y=1; for(int p=0;p<=3;p++){ for(int q=0;q<=3;q++){ a[p][q]=0;} } for(int i=1;i<=n*n;i++){ if((i%n)==1){x++; }else{x--; y++;} if(x==0){x=3;} if(y==3){y=0;} a[x][y]=i;} } } 空の配列や配列を外れるものがあるかをよく考えてみましたが、どうしても解決できません。助けてください・・・

  • クラスメソッドのみのクラスのオブジェクト生成は不可??

    あるテキストのjavaの問題です。 public class Draw{   static void pixel(int x,int y){     /*座標(x、y)に点を描画*/   }   static void line(int x1,int y1,int x2,int y2){     /*座標(x1、y1)~(x2、y2)に線を引く*/   } } で、これを実行するための以下のようなクラス public class TestDraw{ <ここに入力> } という問題なのですが2つまでは絞れたのですが、 (1) public static void main(String args[]){   Draw d = new Draw().line(10,10,20,30); } ↑× (2) public static void main(String args[]){   Draw.line(10,10,20,30); } ↑○ (2)はlineメソッドがstaticメソッドだからオブジェクト生成しなくても良い、ということなんですが (1)も正解のような気がするのですが・・・ 解説によると「lineはvoidなのでnew Draw().line(10,10,20,30);とすれば正解、とあります。 どうもいまいち理解できません。 クラスメソッドはオブジェクト生成しなくとも良い→オブジェクト生成できない ということなのでしょうか? それからちなみに、public classって2つ記述できないんではありませんでしたか?

    • ベストアンサー
    • Java
  • javaのローカル変数について

    基本的なことの質問ですがよろしくお願いいたします。 下記の様なソースコードでint y ;はローカル変数にあたると思いますが 確かローカル変数は初期化されないとコンパイルエラーになるはずなのですが どうもコンパイルも実行もできます。 どうしてでしょうか? よろしくお願いいたします。 class Test1{ static int x = 0; } public class Test extends Test1{ public static void main(String args[]){ Test i = new Test(); int y ; y = ++x; System.out.println( y ) ; } }

    • ベストアンサー
    • Java
  • 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 戻り値についての質問です。

     戻り値を使ったプログラムを作成したところエラーが出たのですが、どこを修正しなければならないのかわかりません。 [プログラム] public class Main31{ public static int add(int x, int y){ int ans = x + y; return ans; } public static void main(String[] args){ int ans = add(100 , 10); System.out.println(x +"+"+y+"="+ans); } } [エラーの内容] Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans);     ^ シンボル: 変数 x 場所: クラス Main31 Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans);      ^ シンボル: 変数 y 場所: クラス Main31 エラー2個 どこを直せば良いのかと、このプログラムだとエラーが出てしまう理由を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 『sun教科書 javaプログラマ』で勉強している者です

    javaの資格を取るべく独学中の者なのですが、回答を読んでも何故そうなるのか理解できない問題に出くわして困っています。ご教授いただければ助かりますm(__)m [問題3-15] 次のコードがあります。 public class CodeWalkTwo { int x = 3; static int y = 2; public static void main(String[] args){ int x = 10; int y = 10; CodeWalkTwo boardWalk = new CodeWalkTwo(); boardWalk.printIt(); boardWalk.printIt(y); } {x = x+1;} static{y += y;} void printIt(){ System.out.print(++x); } void printIt(int y){ System.out.print(" " + ++y); } } 実行結果は次のどれですか。 A. 5 11 B. 11 11 C. 5 5 D. 17行目でコンパイルエラーが発生する E. 5行目と6行目でコンパイルエラーが発生する 正解はA。その理由は2・3行目で宣言されるインスタンス変数およびstatic変数と、5・6行目で宣言されるローカル変数とは異なるスコープだからなのだそうですが、解説が短すぎてよく分かりません>< なぜ、片方はインスタンス変数でもう一方はローカル変数を実行しているのでしょう?

    • ベストアンサー
    • Java
  • メンバ関数のオーバーロード

    #include <iostream> using namespace std; class Point{ private: int x; int y; public: Point(int a=0, int b=0){x=a; y=b;} Point operator+(Point p); }; Point Point::operator+(Point p) { Point tmp; tmp.x = x + p.x; //この部分    tmp.y = y + p.y; return tmp; } int main() { Point p1(1, 2); Point P2(3, 6); p1 = p1 + p2; } ------------- のtmp.x = x + p.x;がなぜこうなるのか解りません。 p1 + p2;をするための前処理?なのは解るのですが。