这是我的代码。我不明白为什么我一直这样做?
它应该递归地将基数从基数十改为任何给定的基数。
任何帮助都会很棒。
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));
}
}
}
答案 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));
}
}
}