给出以下代码。
int[] eg = {21,20,1,12,2}
public numbers(int[] eg)
{
for(int i=0; i < eg.length; i++)
我希望eg.length
为5,其中eg[0]
= 21 eg[1]
将= 20,eg[3]
将= 1
我想检查例如[i]的每个元素,看看它是1位数还是2位数,我试过eg[0].length
无效,但我是否正确,假设它只适用于数组列表?
答案 0 :(得分:14)
将数字转换为字符串并获取长度。
int length = String.valueOf(eg[i]).length();
或者
int length = Integer.valueOf(eg[i]).toString().length();
使用此数学方程式(假设数组中的所有数据都是严格正数)。
int length = (int)(Math.log10(eg[i])+1);
答案 1 :(得分:3)
eg[i]
属于int
类型,没有length
属性。
有很多方法可以告诉这个号码有多少位数:
编写自己的方法,接受int
并保持除以10直到数字达到0。
使用数学属性:
int length = (int) (Math.log10(number) + 1);
将数字转换为字符串并使用其方法
答案 2 :(得分:1)
JDK中使用的算法可能是最快的算法:
final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE };
// Requires positive x
static int stringSize(int x) {
for (int i=0; ; i++)
if (x <= sizeTable[i])
return i+1;
}
答案 3 :(得分:0)
如果你想知道数字长度是多少,MChaker的解决方案是正确的。但是,如果您想查看该数字是包含一位数还是多位数,那么您可以考虑以下解决方案:
public class NumberTest {
public static void main(String[] args) {
int[] eg = {21,20,1,12,2, -3, -8, -20};
System.out.println("Array Length: " + eg.length);
for(int i=0; i < eg.length; i++) {
System.out.println("#" + i + ": Value: " + eg[i] + " one digit number: " + isOneDigitNumber(eg[i]));
}
}
static private boolean isOneDigitNumber(int number) {
return (-10 < number && number < 10);
}
}
这是以上代码的结果:
Array Length: 8
#0: Value: 21 one digit number: false
#1: Value: 20 one digit number: false
#2: Value: 1 one digit number: true
#3: Value: 12 one digit number: false
#4: Value: 2 one digit number: true
#5: Value: -3 one digit number: true
#6: Value: -8 one digit number: true
#7: Value: -20 one digit number: false
#7: Value: -20 one digit number: false
答案 4 :(得分:-3)
要告诉两位数的一位数,请与10进行比较。