0

これが私のコードです。なぜ私はこれを取得し続けるのか理解できませんか?

ベースを10から任意のベースに再帰的に変更することになっています。

どんな助けでも素晴らしいでしょう。

 import java.util.Scanner;

 public class Recursion{

        public static void main(String[] args)
        {
                try {   System.out.println(" Please input the base you would like to convert into " );
                        Scanner BaseIn = new Scanner (System.in);
                        int base1 = BaseIn.nextInt();

                        System.out.println( "Now input the number you would like to convert" );
                        Scanner NumIn = new Scanner (System.in);
                        int number = NumIn.nextInt();

                        BaseConversion (number, base1);
                    }

                catch (Exception e)
                {
                System.out.print("somethigng stupid");
                }
        }

        public String BaseConversion(int num, int base)
        {
                if (num < base)
                {
                return new String ("" + num);
                }
                else
                {
                return BaseConversion (num/base, base) + new String("" + (num % base));
                }
        }

}
4

3 に答える 3

1

静的コンテキストから非静的参照を作成することはできません。静的なメイン メソッドから非静的メソッド (BaseConversion) を呼び出そうとしているため、上記のコードはコンパイルさえされません。

BaseConversion メソッドを作成した後、コードを実行してみてくださいstatic..

提案: - コードをより意味のあるものにするために、コーディング規約に従ってください。メソッドと変数の名前は常にキャメル ケースに従います (小文字で始まり、その後の単語は大文字で始まります)。

于 2012-09-24T06:32:13.657 に答える
0

methodではなく、実行するクラスの名前を指定する必要があります。

この場合

java Recursion
于 2012-09-24T06:32:02.353 に答える
0

BaseConversionはインスタンスメソッドであり、それにアクセスするにはクラスのインスタンスが必要です。

したがって、このように呼び出す必要があります

`new Recursion().baseConversion(number, base1)` //I have changed name according to java conventions.

それ以外の場合は次のように宣言しますstatic

あなたのクラスは以下のようになります。これで、ロジックを続行できます

public class Recursion {

public static void main(String[] args) {
    try {
        System.out
                .println(" Please input the base you would like to convert into ");
        Scanner BaseIn = new Scanner(System.in);
        int base1 = BaseIn.nextInt();

        System.out
                .println("Now input the number you would like to convert");
        Scanner NumIn = new Scanner(System.in);
        int number = NumIn.nextInt();

        System.out.println(new Recursion().baseConversion(number, base1));
    }

    catch (Exception e) {
        System.out.print("somethigng stupid");
    }
}

public String baseConversion(int num, int base) {
    if (num < base) {
        return new String("" + num);
    } else {
        return baseConversion(num / base, base)
                + new String("" + (num % base));
    }
}

}
于 2012-09-24T06:49:03.143 に答える