2013-10-05 27 views
2
public class Return {  
    public static void main(String[] args) {   
     int answer = digit(9635, 1); 
     print("The answer is " + answer); 
    } 

    static void print(String karen) { 
     System.out.println (karen); 
    } 

    static int digit(int a, int b) { 
     int digit = a; 
     return digit; 
    }  
} 

的第n個位創建一個使用稱爲數字返回從一個整數參數的右側的第n個 數字的值功能的程序。 n的值應該是第二個參數。返回一個數

例如:digit(9635, 1)返回5digit(9635, 3)返回6

+1

有任何具體問題的代碼?你有嘗試過什麼嗎? –

+1

保持10分一定的次數,最後取模10。這足以讓你帶着作業去? – Floris

+0

數字(9635,1)返回5的意思是...什麼是回報5它是從9635開始的? – Joey

回答

15

沒有填鴨式您的代碼:

的第n個數字是(分割的其餘部分由10 Ñ)除以10 n-1個


如果希望的迭代方法:

循環n次,每次將數字除以10的結果賦給數字變量。
Afte R中的循環中,第n個數字是分割數的由10

餘量 -

FYI求餘運算符是%,所以例如32 % 10 = 2,和整數除法餘數下降。

+1

@波希米亞可以給出一些例子它如何返回5位數(9635,1)? – Joey

+0

這是一個不好的例子,因爲它的第一個數字,但方法1:(9635%10)/ 1 = 5.方法2:9635%10 = 5 – Bohemian

1

另一種方法是將數字轉換成數組並返回第n個指標

static char digit(int a,int b) 
    { 
     String x=a+""; 
     char x1[]=x.toCharArray(); 
     int length=x1.length; 
     char result=x1[length-b]; 
     return result; 
    } 

現在從你的主要方法運行像這樣

System.out.println("digit answer "+digit(1254,3)); 

輸出

digit answer 2 
+0

@SpiderPig實時可能不是最快的,但這是完美的計算理論答案 – clwhisk

+0

@SpiderPig由於OP正在苦於諸如「返回」這樣的術語,遞歸是一個不太有用的建議。 (而且我認爲我可以用較少的按鍵代碼進行直接計算,而不是使用遞歸解決方案。) –

2
static int dig(int a, int b) { 
    int i, digit=1; 
    for(i=b-1; i>0; i++) 
     digit = digit*10; 
    digit = (a/digit) % 10; 
    return digit; 
} 
0

將數字轉換爲字符串,然後使用charAt()方法。

class X{ 
    static char digit(int a,int n) 
    { 
     String x=a+""; 
     return x.charAt(n-1); 
    } 

    public static void main(String[] args) { 
     System.out.println(X.digit(123, 2)); 
    } 
} 

您可能要仔細檢查第n個位置的號碼長度內:

static char digit(int a, int n) { 
    String x = a + ""; 
    char digit='\0' ; 
    if (n > 0 && n <= x.length()) { 
     digit = x.charAt(n - 1); 
    } 
    return digit; 
}