首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int类型的文本x超出范围

问int类型的文本x超出范围
EN

Stack Overflow用户
提问于 2021-10-18 20:47:33
回答 5查看 269关注 0票数 0

方法如下:

代码语言:javascript
复制
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一样大时,它会抛出一个异常:

代码语言:javascript
复制
The literal 1000000000000 of type int is out of range
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-10-18 20:57:53

Java中的int类型可用于表示-2147483648到2147483647之间的任意整数。看起来你已经达到了int类型可以容纳的限制。考虑使用long。因为你使用的方法需要很长的时间。

来自:

代码语言:javascript
复制
int convertedLong = (int) n;

至:

代码语言:javascript
复制
long convertedLong = n;
票数 0
EN

Stack Overflow用户

发布于 2021-10-18 20:52:15

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

将其设置为long,并将i变量设置为long。

出现此错误是因为您仅通过1000000000调用该函数。

将L附加到它,以将其作为"long“传递,如

代码语言:javascript
复制
100000000000L

否则它将被当作int。

票数 1
EN

Stack Overflow用户

发布于 2021-10-18 20:53:16

除非另有说明,否则java中的所有数字文字都被定义为int类型。因此,您需要做的是将文本定义为long,方法是向文本添加L后缀。

1000000000000L

另外,为什么要将long转换为int?想要破坏目的吗?

有关更多信息,请查看this问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69622407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档