java - 为什么我的自定义字体数组会出现 ArrayIndexOutOfBoundsException?

标签 java fonts java-2d

我正在为 #towerjam 制作游戏,我需要渲染一些我制作的字体。这是我正在使用的代码。

public static void render(String msg, Graphics g, int x, int y) {
    msg.toUpperCase();
    char[] msgArray = msg.toCharArray();
    for (char c : msgArray) {
        System.out.println();
        g.drawImage(letters[c-65], x, y, Tile.DRAW_SIZE, Tile.DRAW_SIZE, null);
        x+=Tile.DRAW_SIZE;
    }
}

数组letters是从我的 Sprite 表中裁剪的BufferedImages数组。现在它给了我一个 ArrayIndexOutOfBoundsException ,我不知道为什么。

最佳答案

字符串在 Java 中是不可变的(就像许多其他语言一样),因此由于 msg.toUpperCase(); 无法编辑原始字符串,因此它会创建一个包含大写字符的新字符串并返回它。

如果您希望将此返回的字符串存储在 msg 中,只需将其重新分配回 msg:

msg = msg.toUpperCase();

关于java - 为什么我的自定义字体数组会出现 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581628/

相关文章:

java - Jasper 报告零值的十进制格式给出 null

html - 字体在 Chrome 中有效,但在 Firefox 或 IE 中无效

ios - iOS 8 中的旧金山字体

java - 为什么这个笔划这么零散,为什么只划到里面?

Java Swing 无法正确渲染

java - 在同一个 JLabel 上绘制多个图形

java - 如何将 GlassFish 放到网上?

java - 扩展 Spring Cloud Config Client 的正确方法是什么?

java - 如果您正在使用缓冲读取器读取整行,那么在套接字上设置超时是否有效?

html - 字体未在 HTML 中应用