java - 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
解决方案
问题来了,因为您的 convertLong 是 int 类型。为什么?
让它变长并且变i
长。
出现此错误是因为您正在通过 just 调用该函数1000000000
。
附加L
到它,将它作为“长”传递
100000000000L
否则它将作为int
.
推荐阅读
- css - 导航的主体对齐问题
- discord - 解禁未定义
- arrays - 以日期形式转换秒数 Numpy Python
- matlab - 使用 rank1 、 BFGS 和 DFP 算法和准牛顿法在 powell 函数上获得相同的性能是否正常
- ios - 如何从 SwiftUI 的列表中获取已删除行的 ID?
- python - 无损 tiff 图像在 Python 中的第一个图像之后读取和写入时发生变化
- django - 为用户提供长时间 API 调用的日志
- github - 如何使用 env 在 Vercel 上部署 Headless CMS(Shopify):包含产品的页面未在生产中显示
- node.js - Chokidar 在 Windows 上为一个目录运行多个读取目录进程
- docker - Wiremock 容器在不重新启动的情况下不反映映射更改