首页 > 解决方案 > 尝试在 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”。

但我不明白这一点。我明确声明aand bas int, not long。我希望我的代码给我一个从 0 到 61 的随机整数,所以它不应该自动成为 a long,因为 0 和 61 在整数范围内。

我对 Java 还很陌生,所以如果我做的事情明显错了,我深表歉意。

标签: javarandom

解决方案


Math.round() 在这里返回 long ,所以你可以这样写,

int A = (int) Math.round(62*Math.random());

另一种方法是(但效率低下)

int A = Long.valueOf(Math.round(62*Math.random())).intValue();

休息你做对了。:)

这是一种向下转换(可能会丢失信息),因此您需要确保右侧的数字仅在 int 范围内。


推荐阅读