尝试递归方法时出现未识别的错误

时间:2015-07-25 23:13:00

标签: java

抱歉,如果我的问题看起来很愚蠢,我只是一个想要学习java的新手。在这个代码我只是试图用递归方法计算2的对数。但不知怎的,日食告诉我有问题(强字母是红色下划线的字母,我试图使这些字母变得强烈,但只有明星出现了)。

在此感谢和抱歉我的英语。 :d

import javax.swing.JOptionPane;
public class rekursivloga {
public static void main(String[] args) {
    String einlesenzahl = JOptionPane.showInputDialog("Bitte eine Zahl eingeben!");
    int zahl = Integer.parseInt(einlesenzahl);
    int ergebnis = logrekursiv(zahl);

    private int logrekursiv(int zahl) {
        if (zahl == 1) {
            return 0;
        }
        if (zahl <1 ) {
            return -1;
        }
        if (zahl >1) 
            return 1 + logrekursiv (zahl/2);
    }

}

}

2 个答案:

答案 0 :(得分:2)

你不能在另一个方法中使用方法。将logrekursiv移动到类的主体中(并使其成为static,因为其中没有基于状态的内容)。

答案 1 :(得分:0)

您在另一个方法(logrekursiv方法)中声明了一个方法(main)。这是非法的,你应该移动main方法的方法oustide。

public static void main(String[] args) {
    String einlesenzahl = JOptionPane.showInputDialog("Bitte eine Zahl eingeben!");
    int zahl = Integer.parseInt(einlesenzahl);
    int ergebnis = logrekursiv(zahl);

}

private static int logrekursiv(int zahl) {
    if (zahl == 1) {
        return 0;
    }
    if (zahl <1 ) {
        return -1;
    }
    else {
        return 1 + logrekursiv (zahl/2);
   }
}

另外,我用else语句替换了最后一个if语句,因为它完全相同,并使编译器确保最终返回一个值。

请确保您阅读了一些Java教程,因为您似乎尚未正确学习该语言。