首页 > 解决方案 > int 类型的文字 x 超出范围

问题描述

方法如下:

public static long repeatedString(String s, long n) {
    
    
    int convertedLong = (int) n;
    String repeated = new String(new char[convertedLong]).replace("\0", s);
    System.out.println(repeated);

    long numberOfAs = 0;
    for (int i = 0; i < convertedLong; i++ )
    {
        if (repeated.charAt(i) == 'a')
        {
            numberOfAs += 1;
        }
    }
    System.out.print(numberOfAs);
    return numberOfAs;
}

当参数n很小时方法工作正常,但是当它很大时1000000000000会抛出异常:

The literal 1000000000000 of type int is out of range

标签: java

解决方案


问题来了,因为您的 convertLong 是 int 类型。为什么?

让它变长并且变i长。

出现此错误是因为您正在通过 just 调用该函数1000000000

附加L到它,将它作为“长”传递

100000000000L

否则它将作为int.


推荐阅读