Java 检查int[]的值是否可以是长的
我有一个整数数组,即[1,2,3,4,5]。每一行对应于十进制值,所以5是1,4是10,3是100,这给出了12345的值,我计算并存储它。 这就是功能:Java 检查int[]的值是否可以是长的,java,long-integer,Java,Long Integer,我有一个整数数组,即[1,2,3,4,5]。每一行对应于十进制值,所以5是1,4是10,3是100,这给出了12345的值,我计算并存储它。 这就是功能: public long valueOf(int[]x) { int multiplier = 1; value = 0; for (int i=x.length-1; i >=0; i--) { value += x[i]*multiplier; multiplier *= 10
public long valueOf(int[]x) {
int multiplier = 1;
value = 0;
for (int i=x.length-1; i >=0; i--) {
value += x[i]*multiplier;
multiplier *= 10;
}
return value;
}
现在我想检查一下other int[]的值是否没有超过,然后用valueOf计算它的值。如何检查?
我应该使用table.length还是将其转换为字符串并发送到
公共长线
或者只是添加异常来抛出valueOf函数?我希望您知道这是一种可怕的存储大整数的方法:只需使用
但是,如果确实要检查是否超过某个值,只需确保数组的长度小于或等于19。然后可以将每个单元格分别与Long.MAX\u value中的值进行比较。或者你可以直接使用BigInteger。我希望你知道这是一种可怕的存储大整数的方法:只需使用
但是,如果确实要检查是否超过某个值,只需确保数组的长度小于或等于19。然后可以将每个单元格分别与Long.MAX\u value中的值进行比较。或者您可以只使用BigInteger。是否保证x的每个值都是非负的 如果是这样,您可以这样做:
public long valueOf(int[]x) {
int multiplier = 1;
long value = 0; // Note that you need the type here, which you did not have
for (int i=x.length-1; i >=0; i--) {
next_val = x[i]*multiplier;
if (Long.MAX_LONG - next_val < value) {
// Error-handling code here, however you
// want to handle this case.
} else {
value += next_val
}
multiplier *= 10;
}
return value;
}
当然,BigInteger会使这更简单。但是我不知道你的问题规格是什么。你能保证x的每个值都是非负的吗 如果是这样,您可以这样做:
public long valueOf(int[]x) {
int multiplier = 1;
long value = 0; // Note that you need the type here, which you did not have
for (int i=x.length-1; i >=0; i--) {
next_val = x[i]*multiplier;
if (Long.MAX_LONG - next_val < value) {
// Error-handling code here, however you
// want to handle this case.
} else {
value += next_val
}
multiplier *= 10;
}
return value;
}
当然,BigInteger会使这更简单。但我不知道你的问题规格是什么。简短回答:所有长码都是18位数。所以,如果你知道没有前导零,那么只需检查x.length19是坏的,length简短回答:所有的long都适合18位。所以,如果你知道没有前导零,那么只需检查x.length19是坏的,lengthun不幸的是,我不能使用java.Big中的任何一个。。。是的,我确信肯定有积极的迹象。并且在开始时声明long值。复制粘贴是我的错:不幸的是,我不能使用java.Big。。。课程-为什么?是否有一些Java平台不支持它们?您的目标是重新实现BigInteger类吗?您应该看看它是如何工作的,因为如果您正试图这样做,那么您的解决方案是可怕的。。。是的,我确信肯定有积极的迹象。并且在开始时声明long值。复制粘贴是我的错:不幸的是,我不能使用java.Big。。。课程-为什么?是否有一些Java平台不支持它们?您的目标是重新实现BigInteger类吗?你应该看看它是如何工作的,因为如果你正试图这样做的话,你的解决方案是可怕的。