Java - 打印数字的最后一位数字以及之前的数字

时间:2014-03-15 12:59:30

标签: java for-loop return division modulus

如果我想要打印一个数字的最后一位(比如16),我使用:数字%10,输出为6.如果我想在最后一位之前打印数字,我可以将数字除以10转为int。这仅适用于数字!如果我想获得6之前的数字,我肯定会获得0,但挑战是获得相同的数字而不是0.这是怎么回事?

2 个答案:

答案 0 :(得分:2)

一个简单的实现可能如下所示:

import static java.lang.Math.abs;
import static java.lang.Math.max;
import static java.lang.Math.min;

public static void main(String[] args) {
   System.out.println(getNthNumber(-16, -14)); // 1
   System.out.println(getNthNumber(16, -14)); // 1
   System.out.println(getNthNumber(16, 0)); // 1
   System.out.println(getNthNumber(16, 1)); // 6
   System.out.println(getNthNumber(16, 4)); // 6
   System.out.println(getNthNumber(12345678, 4)); // 5
}

static int getNthNumber(final int pNumber, final int pIndex) {
   final String numberString = Integer.toString(abs(pNumber));
   return numberString.charAt(max(0, min(pIndex, numberString.length() - 1))) - '0';
}

答案 1 :(得分:1)

我不确定,但我认为你对某些事感到困惑。这是直截了当的数学方法:

int i = 16;
int lastDigit = i % 10;
int precedingDigit = (i / 10) % 10;

在Java中,当你进行整数除法时,结果总是向零舍入。


对于您提供的示例,如果是5.您希望两次获得相同的数字:

int i = 5;
int lastDigit = i % 10;
int precedingDigit = (i == lastDigit) ? lastDigit : ((i / 10) % 10);