java几位_JAVA 获得数字第几位的几种方法总结(转)

JAVA获得某个数字的最后第几位是什么的方法,比如,1234567890,则获得最后第三位,则返回8

public class Test { // 字典,里面保存的是1,10,100,1000..直到long的最大允许位数

private static final long[] NUMBERS = new long[19]; static {

NUMBERS[0] = 1; for (int i = 1;

i <

19; i++) {

NUMBERS[i] =

NUMBERS[i - 1] * 10;

}

} public

static void main(String[] args) {

long number = 1234567890123456789L;

System.out.println("测试取得倒数第几位");

System.out.println(getNumberAtLast(number, 3));

System.out.println(getNumberAtLast2(number, 3));

System.out.println(getNumberAtLast3(number, 3)); int total = 1000000; long begin = System.nanoTime(); for (int i = 0;

i <

total; i++) {

getNumberAtLast(number, 3);

}

System.out.println("getNumberAtLast =" + (System.nanoTime() - begin));

begin =

System.nanoTime();

for (int i = 0;

i <

total; i++) {

getNumberAtLast2(number, 3);

}

System.out.println("getNumberAtLast2=" + (System.nanoTime() - begin));

begin =

System.nanoTime();

for (int i = 0;

i <

total; i++) {

getNumberAtLast3(number, 3);

}

System.out.println("getNumberAtLast3=" + (System.nanoTime() - begin));

System.out.println("测试取得正数第几位");

System.out.println(getNumberAtFirst(number, 3));

System.out.println(getNumberAtFirst2(number, 3));

begin =

System.nanoTime();

for (int i = 0;

i <

total; i++) {

getNumberAtFirst(number, 3);

}

System.out.println("getNumberAtFirst =" + (System.nanoTime() - begin));

begin =

System.nanoTime();

for (int i = 0;

i <

total; i++) {

getNumberAtFirst2(number, 3);

}

System.out.println("getNumberAtFirst2=" + (System.nanoTime() - begin));

} public

static int getNumberAtLast(long number, int index) { for (; index > 1;

index--)

{

number /=

10;

} return

(int) (number % 10);

} public

static int getNumberAtLast2(long number, int index) {

String str =

Long.toString(number);

if (str.length() < index) { return 0;

} return

str.charAt(str.length()

- index) - 0x30; // 数字0的字符形式 } public static int getNumberAtLast3(long number, int index) { return (int) ((number / (NUMBERS[index - 1])) % 10);

} public

static int getNumberAtFirst(long number, int index) { int place = getNumberIndex(number);

number /=

NUMBERS[place

- index + 1]; return (int) (number % 10);

} public

static int getNumberAtFirst2(long number, int index) {

String str =

Long.toString(number);

return str.charAt(index - 1) - 0x30; // 数字0的字符形式 } private static final int getNumberIndex(long number) { return getNumberIndexR(number, 0, 19);

} private

static final int getNumberIndexR(long number, int left, int right) { if (right <= left + 1)

{ return

left;

} int

mid = (right - left) / 2 + left; if (NUMBERS[mid] > number) { return getNumberIndexR(number, left, mid);

} else

{ return getNumberIndexR(number, mid, right);

}

}

}

运行结果:

测试取得倒数第几位

7

7

7

getNumberAtLast =74142943

getNumberAtLast2=379321953

getNumberAtLast3=37117566

测试取得正数第几位

3

3

getNumberAtFirst =136200830

getNumberAtFirst2=375250207

转自http://www.update8.com/Program/Java/7039.html

另外,我在我的程序中运用到的是split方法,以下是在网上找的一些关于split方法的一些总结:(转自网络)

1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");

2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"\\";

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or

n=?”,把三个都分隔出来,可以用String.split("and|or");

使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值