2012-09-24 40 views
0

這是我的代碼。我不明白爲什麼我一直這樣做?繼續在線程「main」中得到異常java.lang.NoSuchMethodError:main?

它應該遞歸地將鹼基從十個鹼基改變到任何給定的鹼基。

任何幫助都會很棒。

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

你可以添加你想要的輸出嗎?不能對非靜態方法BaseConversion(int,int)進行靜態引用。 – gks

+0

你的代碼是如何編譯的?你永遠不應該運行一個包含編譯錯誤的代碼。 –

回答

0

你必須給的類的名稱來運行,而不是方法

在這種情況下

java Recursion 
1

您不能從靜態上下文非靜態引用。 你上面的代碼甚至不會編譯,因爲你正試圖從你的靜態main方法調用非靜態方法(BaseConversion)..

嘗試使你的BaseConversion方法static運行後您的代碼..

建議: - 遵循編碼慣例,使您的代碼更有意義..您的方法和變量名稱始終遵循駱駝案例(以小寫開頭,隨後使用大寫字母)

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

} 
相關問題