Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

エラーを解決できません

下のソースを実行してみたところ、エラーが出てしまいそのエラーを解決できません。


public class FractalFigure {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        int alive=1,dead=0,sz=33;
        int i,j;
        int[][] s=new int[33][33];
        for(i=0;i<sz;i++) s[i][0]=dead;
        for(j=2;j<sz;j++) s[0][j]=dead;
        s[0][1]=alive;
        for(i=0;i<sz-1;i++){
            for(j=1;j<sz;j++){
                    s[i+1][j]=stschk(s[i][j],s[i][j-1]);
                    if(s[i-1][j-1]==alive) System.out.println("*");
                    else                   System.out.println(" ");
                
            }
            System.out.println("\n");
        }
        
    }


    int stschk(int s1,int s2)
    {    
        int alive=1,dead=0;
        if(((s1==dead)&&(s2==alive))||
                   ((s1==alive)&&(s2==dead))) return alive;
                else return dead;
    }
}

下の文がエラーメッセージです

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    型 FractalFigure から非 static メソッド stschk(int, int) に static 参照することはできません。

    at FractalFigure.main(FractalFigure.java:17)

アドバイスをよろしくお願いします

10

回答

8879

閲覧

10件の回答

評価

0

http://www.google.com/search?q=static+%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82

評価

0

$さん。アドバイスをありがとうございます
教えてくださったアドレスのページをもとに工夫してみたものの、うまくできませんでした。ご迷惑とは思いますが、よろしくお願いします。


public class FractalFigure {

    /**
     * @param args
    */    
   class Tips2_3{
       int alive=1,dead=0; 
    int stschk(int s1,int s2)
    {    
        if(((s1==dead)&&(s2==alive))||
                   ((s1==alive)&&(s2==dead))) return alive;
                else return dead;
    }
    
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        
        int alive=1,dead=0,sz=33;
        int i,j;
        int[][] s=new int[33][33];
        for(i=0;i<sz;i++) s[i][0]=dead;
        for(j=2;j<sz;j++) s[0][j]=dead;
        s[0][1]=alive;
        for(i=0;i<sz-1;i++){
            for(j=1;j<sz;j++){
                Tips2_3 tips = new Tips2_3();
                    s[i+1][j]=(+tips.stschk(s[i][j],s[i][j-1]));
                    if(s[i-1][j-1]==alive) System.out.println("*");
                    else                   System.out.println(" ");
                
            }
            System.out.println("\n");
        }
    }
   }
}

評価

0

staticが何かは判ってますか?

評価

0

「static参照できません」=static定義されたメソッドからstatic定義されていないフィールドやメソッドにアクセスしていないかチェック 

http://www.atmarkit.co.jp/fjava/rensai3/code_debug03/debug03.html

補足。

評価

0

ちらっと見ただけですが

>int[][] s=new int[33][33];

なのに

>sz=33;

ですか?

forのiも0からはじまっているのに s[i-1]してますけど
大丈夫ですか?

・・・・・あぁ・・・新学期ですね(なんとなく)

評価

0

すいません。エラーメッセージをつけ忘れていました。下の物がそうです。

java.lang.NoSuchMethodError: main
Exception in thread "main" 

評価

0

実行できてないですね。
>java FractalFigure
見たいにコマンドプロンプトで
どう入力しているか、そのままコピペしてみてください。

評価

0

よく見たらmainメソッドが
インナークラスTips2_3のメソッドになってませんか?

評価

0

//多分答え
//{}カッコとスコープに注意してください!!
public class FractalFigure {

    public static void main(String[] args) {

       class Tips2_3{

          private int alive=1,dead=0; 
          public int stschk(int s1,int s2){    
            if(((s1==dead)&&(s2==alive))||
                       ((s1==alive)&&(s2==dead))) {
            return alive;
            }else{ 
            return dead;
        }
         }

       }

        int alive=1,dead=0,sz=33;
        int i,j;
        int[][] s=new int[sz][sz];
        
    for(i=0;i<sz;i++) {
      s[i][0]=dead;
    }
        for(j=2;j<sz;j++) {
      s[0][j]=dead;
    }

        s[0][1]=alive;

        for(i=0;i<sz-1;i++){
            for(j=1;j<sz;j++){
                Tips2_3 tips = new Tips2_3();
                    s[i+1][j]=(+tips.stschk(s[i][j],s[i][j-1]));
                    if(s[i][j-1]==alive){
            System.out.println("*");
                    }else{
                    System.out.println(" ");
            }
                
            }
            System.out.println("\n");
        }

    }

}

評価

0

?さん。実行結果は下のようにならなければいけません。


 *
 **
 * *
 ****
 *   *
 **  **
 * * * *
 ********
 *       *
 **      **
 * *     * *
 ****    ****
 *   *   *   *
 **  **  **  **
 * * * * * * * *
 ****************
 *               *
 **              **
 * *             * *
 ****            ****
 *   *           *   *
 **  **          **  **
 * * * *         * * * *
 ********        ********
 *       *       *       *
 **      **      **      **
 * *     * *     * *     * *
 ****    ****    ****    ****
 *   *   *   *   *   *   *   *
 **  **  **  **  **  **  **  **
 * * * * * * * * * * * * * * * *

貴重なご意見ありがとうございました。よろしければまたご教授お願いします。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。