继续在线程“main”中获取异常java.lang.NoSuchMethodError:main?

时间:2012-09-24 06:18:52

标签: java runtime-error

这是我的代码。我不明白为什么我一直这样做?

它应该递归地将基数从基数十改为任何给定的基数。

任何帮助都会很棒。

 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));
                }
        }

}

3 个答案:

答案 0 :(得分:1)

您无法从静态上下文创建非静态引用。 您的上述代码甚至不会编译,因为您尝试从静态main方法调用非静态方法(BaseConversion)。

在制作BaseConversion方法static ..

后尝试运行代码

建议: - 遵循编码约定,使代码更有意义..您的方法和变量名称始终遵循Camel Case(以小写字母开头,后跟大写字母)

答案 1 :(得分:0)

您必须提供的名称才能运行,而不是方法

在这种情况下

java Recursion

答案 2 :(得分: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));
    }
}

}