java - 尝试在 Java 中生成随机文本 - “类型不匹配:无法从 long 转换为 int”
问题描述
我正在尝试在 Java 中生成 100 个字符的随机文本。这是我的代码:
import java.lang.Math;
public class RandomTextGenerator {
public static void main(String[] args) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
for (int i = 0; i < 100; i++) {
int a = Math.round(62*Math.random());
int b = a + 1;
System.out.println(characters.substring(a,b));
}
}
我收到错误“类型不匹配:无法从 long 转换为 int”。
但我不明白这一点。我明确声明a
and b
as int
, not long
。我希望我的代码给我一个从 0 到 61 的随机整数,所以它不应该自动成为 a long
,因为 0 和 61 在整数范围内。
我对 Java 还很陌生,所以如果我做的事情明显错了,我深表歉意。
解决方案
Math.round() 在这里返回 long ,所以你可以这样写,
int A = (int) Math.round(62*Math.random());
另一种方法是(但效率低下)
int A = Long.valueOf(Math.round(62*Math.random())).intValue();
休息你做对了。:)
这是一种向下转换(可能会丢失信息),因此您需要确保右侧的数字仅在 int 范围内。
推荐阅读
- android - 从android中的城市和国家获取时区ID
- python - Scrapy 获取跨越多行和嵌套元素内的文本
- python - Emacs:自动填充模式 - 如何更改行尾字符?
- html - 谷歌地图有额外的宽度
- apostrophe-cms - Apostrophe CMS:在嵌套连接中获取片段数据(joinByArray – joinByOne)
- javascript - 使用 kepresses 和 if 语句来启用和禁用元素
- assembly - 如何在装配臂中打印多个字符串?
- javascript - 使用 Ionic 4 Angular Fire Auth 保护的无限 console.logging
- azure - 创建函数应用时出现“此区域不允许此订阅的缩放操作”错误
- ios - 如何从 A 中减去 UIBezierPath A&B 的交集?