2017-01-15 136 views
4

我是Java新手,需要一些帮助。Java限制长度整数

有人能告诉我如何在此代码中将限制长度设置为整数= 6。

例如

id = 124973 

public void setId(int id) { 
    this.id = id; 
} 
+0

你可以让'setId'有'this.id = id%1000000;'。 –

+1

当“长度”不是6或更少时,你想要做什么? – harold

回答

6

一种方式来做到这一点是这样的:

public boolean checkLength(int id, int length) { 
    return 0 == (int)(id/Math.pow(10, length)); 
} 

编辑:

按以下@EliSadoff评论,你也可以做这样的事情:

public boolean checkLength(int id, int length) { 
    return Math.log10(id) < length; 
} 

然后你可以简单地调用这个函数:

checkLength(123456, 6); 
+0

'Math.log10(id)

+0

@EliSadoff对!我没有想过。 :)我会发布和*编辑*。谢谢 – user2004685

+0

不用担心!很好的答案! –

2

分配之前验证所述InP它

public void setId(int id){ 
    if(id>0 && id<=999999){ 
     this.id= id; 
    }else{ 
     this.id= 0; 
    } 
} 
3

“将String.valueOf(ID)。长度()” - 检查一个int变量的长度,这会收到在setId方法参数中。

public void setId(int id){ 
    if(6 >= String.valueOf(id).length()) 
     this.id= id; 
    else 
     //do something if the received id's length is greater than max 
} 
3

在你setId方法增加一个检查:

if (id >= 1000000 || id < 0) { 
    throw new IllegalArgumentException("id must be max 6 digits and cannot be negative"); 
} 
+0

大部分的答案都假设当你设置一个“错误”的编号时,你会想要一些默认的......我认为这是非常糟糕的做法,这将导致惊喜的下降。 – john16384

0

在如int java的数字不具有的长度。尽管Integer是一个类,但没有length()函数 - 请参阅Java文档。因此,要找到长度,您必须使用String.valueOf(Integer_value)将Integer转换为String。所以,你可以这样做:

Public void limit(Integer a) { 
if(String.valueOf(a)<=6) { 
    //do your logic 
} 
else { 
//printout Integer length limit exceeded 
} 
}