Java 检查int[]的值是否可以是长的

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

我有一个整数数组,即[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;
    }
    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类吗?你应该看看它是如何工作的,因为如果你正试图这样做的话,你的解决方案是可怕的。