找到整数的目标数字

时间:2015-07-16 15:10:39

标签: java digit radix-sort

我可以使用哪些方法返回整数的特定数字?

//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"我想抓住第二个数字(十分之一),它会返回" 0"。

这是一种丑陋的方式,但有没有一种方法可以不使用字符串?也许用模数?如果我想找到第7位(百万分之一),这种方法甚至无法工作(该数字必须被解析为" 0048602")。

可能用于基数排序(将数字放入"桶和#34;基于有效数字)。我发现使用这种方法相对比较费力。

3 个答案:

答案 0 :(得分:2)

有一个想法

<ul class="dropdown-menu pull-right" role="menu">
       <li><a href="#">Menu Item 01</a></li>
       <li><a href="#">Menu Item 01</a></li>
       <li><a href="#">Menu Item 02</a></li>
       <li><a href="#">Menu Item 03</a></li>
       <li><a href="#">Menu Item 04</a></li>
</ul>

未经测试

编辑更好的方式:

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
}

答案 1 :(得分:2)

您可以使用以下代码执行此操作:

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

答案 2 :(得分: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)

取消剩余的零