检查int变量在Java中是上溢还是下溢

时间:2019-05-17 00:38:22

标签: java

我需要从头开始创建parseInt方法,到目前为止,我已经明白了。唯一的问题是我很难弄清楚如何找出一个int变量是否溢出或下溢,以及是否要在Java中抛出IllegalArgumentException。

为了更好地理解,这是我的任务:

创建静态方法parseInt(String),该方法将字符串转换为正值或负值的int值。当...时,方法抛出IllegalArgumentException。

  1. 字符串中的'-'以外是非数字字符(作为字符串的第一个字符)。
  2. 字符串只有'-',没有数字。
  3. 字符串表示一个太大的数字,无法存储为整数并产生溢出
  4. 字符串表示的数字太小而无法存储为整数,并且会产生下溢

这是我到目前为止所拥有的

 /**
 * Convert a string into an integer value
 * @param str The string to be converted
 * @return answer
 * @throws IllegalArgumentException if answer is underflowing or overflowing
 */
public static int parseInt(String str) throws IllegalArgumentException {
    int answer = 0, factor = 1;
    int i = 0;
    for (i = str.length()-1; i >= 0; i--) {
        answer += (str.charAt(i) - '0') * factor;
        factor *= 10;
    }

    boolean isNegative = false;
    if(str.charAt(0) == '-') {
        isNegative = true;
    }

    if (answer > Integer.MAX_VALUE) throw new IllegalArgumentException();
    if (answer < Integer.MIN_VALUE) throw new IllegalArgumentException();

    if (isNegative) {
        answer = -answer;
    }

    return answer;
}

1 个答案:

答案 0 :(得分:0)

这样做无需使用$price_array = ''; public function getPrice($crawler { $crawler->filter('#j-sku-price')->each(function($node) { $price = $node->text(); array_push($price_array,$price); }); return $price_array; }

long