2013-10-05 5 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 должно быть вторым аргументом.Возвращает п-ю цифру числа

Например: digit(9635, 1)5 и digit(9635, 3)6.

+1

Имея какую-либо конкретную проблему с кодом? Вы что-то пробовали? –

+1

Продолжайте делить на 10 определенное количество раз, а затем по модулю 10 в конце. Достаточно ли этого, чтобы заставить вас пойти с домашней работой? – Floris

+0

что цифра (9635, 1) возвращает 5 означает ... что такое доходность 5 от 9635? – Joey

ответ

15

Без ложки кормления вам код:

п-я цифра (остаток от деления на 10 п), разделенная на 10 п-1


Если вы хотите итеративный подход:

Петля n раз, каждый раз присваивая числовой переменной результат деления числа на 10.
Afte г петля, п-я цифра остаток от деления числа на 10.

-

FYI Оператор остаток %, так что, например, 32 % 10 = 2 и целочисленное деление капель остатки.

+1

@Bohemian может привести несколько примеров того, как он возвращает 5 в цифрах (9635, 1) ?? – Joey

+0

Это плохой пример, потому что его первая цифра, но метод 1: (9635% 10)/1 = 5. метод 2: 9635% 10 = 5 – Bohemian

1

Другой способ преобразования цифры в массив и вернуться п-й индексировать

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

Вы можете перепроверить, что п-й позиции находится в пределах длины номера:

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; 
} 
Смежные вопросы