2015-07-16 8 views
2

Какие методы я могу использовать для возврата определенной цифры целого числа?Найти цифру цели целого числа

//val = number to find target digit on 
//dig = the digit to return from right-side 
private int digit(int val, int dig) { 
    String num = "" + val; 
    return Character.getNumericValue(num.charAt(num.length-dig)); 
} 

Например, если val были «48602», и я хотел, чтобы захватить 2-й цифры (десятые), он вернется «0».

Вот уродливый способ сделать это, но есть ли способ без использования строк вообще? Может быть, с модулем? Что, если бы я хотел найти 7-ю цифру (миллионные), этот метод даже не работал бы (число должно было бы анализироваться как «0048602»).

Потенциальное использование было бы для сортировки Radix (помещение чисел в «ведра» на основе значительных цифр). Я нахожу, что использование этого метода является относительно налоговым.

+2

выглядит ограниченным – manoj

ответ

2

Существует идея

private int digit(int val,int dig){ 
    int div = 1; 
    for(int i=0;i<dig;i++) 
     div*=10; //make 10^dig 
    val/=div; //remove the smaller digits 
    return val%10; //return only one digit 
} 

Не тестировался

РЕДАКТИРОВАНИЕ лучше так:

private int digit(int val,int dig){ 
    int div = (int)Math.pow(10,dig); 
    val/=div; //remove the smaller digits 
    return val%10; //return only one digit 
} 
2

Вы можете сделать это с помощью следующего кода:

public int getDigit(int n, int i) {  
    return (n/((int) Math.pow(10, i))) % 10; 
} 
2

Вы можете использовать

return ((val%(Math.pow(10, dig))) - (val%(Math.pow(10, dig-1))))/(Math.pow(10, dig-1)); 

Где

(val%(Math.pow(10, dig))) 

снимает передние цифры

- (val%(Math.pow(10, dig-1))) 

вычитают хвостовые цифры, и

/(Math.pow(10, dig-1) 

тех kes от оставшихся нулей

Смежные вопросы