java - 使用 charAt 时出现字符串 outOfBoundsException

标签 java bukkit

我有以下代码:

@SuppressWarnings("resource")
public void changeSkin(String name){
    try {
        URL uuidURL = new URL("https://api.mojang.com/users/profiles/minecraft/" + name);

        String uuid = new Scanner(uuidURL.openStream(), "UTF-8").useDelimiter("\\A").next();
        uuid = uuid.substring(7, 39);

        System.out.println(uuid); // works

        URL valueURL = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false");

        String value = new Scanner(valueURL.openStream(), "UTF-8").useDelimiter("\\A").next();
        value = value.replace('"', '!');
        value = value.replaceAll("!value!:!", "*");
        value = value.replaceAll("=!,", "+");
        value = value.substring(value.charAt('*'), value.charAt('+')); // Gives an error outOfBounds: -13

        String signature = new Scanner(valueURL.openStream(), "UTF-8").useDelimiter("\\A").next();
        signature = signature.replaceAll("!signature!:!", "_");
        signature = signature.replaceAll("=!}]}", "~");
        signature = signature.substring(value.charAt('_'), value.charAt('~'));

        System.out.println(signature);
        System.out.println(value);

        //profile.getProperties().put("textures", new Property(value, signature));

    } catch (Exception e) {
        e.printStackTrace();
    }

}

运行时会抛出 outOfBoundsException: -13

但是怎么会抛出负数呢?

感谢您的帮助

编辑:这是网站:https://sessionserver.mojang.com/session/minecraft/profile/e96ca9800c6c4a1588a2922a02ae1080?unsigned=false

最佳答案

我猜你正在制作某种《我的世界》机器人之类的东西......但这无关紧要。

您错误地使用了 charAt。

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt(int)

您要查找的是indexOf

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)

关于java - 使用 charAt 时出现字符串 outOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486463/

相关文章:

java - Hibernate, MySQL - 数据截断 : Data too long for column exception message

java - Kafka 中消息的大小开销是多少?

java - Override 的 ScheduledEvent 事件处理程序

java - 我可以使用原始类作为类型并仍然使用它的子类吗?

java - 如何编写一个呈现 JSP 片段列表的 JSP,而无需 IF 切换代码

java - JSP、JavaScript 和 Java 对象

java - Bukkit:当另一个插件运行另一个命令时清除 inv

minecraft - 是否可以使用 Bukkit for Minecraft 来定义一种新的生物?

读取单个文件的Java多线程应用程序

java - bukkit - 跌落预防不起作用?