gpt4 book ai didi

java - 从最后一个字符开始向后迭代 3

转载 作者:行者123 更新时间:2023-12-02 10:12:15 25 4
gpt4 key购买 nike

我正在尝试创建一个代码,它接受任何字符串并将其向后转发给我,缺少每第三个字符并包括最后一个字符。

EX: "123456789" should return "963" & "Hello, World!" should return "!r lH"

import java.util.Scanner;

public class cypher {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String str = scnr.nextLine();
String reverse = "";
System.out.println(str.length());
for (int i = str.length() - 1; i >= 0; --i) {
reverse = reverse + str.charAt(i - 3);
}
System.out.println(reverse);
}
}

上面的代码是我到目前为止所拥有的。但是,当我运行此代码时,我收到此错误消息:“线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:-1”

我不明白,因为字符串长度是10,所以为什么它不能做到这一点?有人可以向我解释一下这个问题并给我一个如何解决这个问题的建议吗?

最佳答案

我建议只迭代字符串中的字符,从最后一个位置开始,以 3 的增量向后移动:

Scanner scnr = new Scanner(System.in);
String str = scnr.nextLine();
String reverse = "";

for (int i=str.length()-1; i >= 0; i=i-3) {
reverse += str.charAt(i);
}

System.out.println(reverse);

您当前的方法失败了,因为循环只执行单个步骤,而不是三个步骤。另请注意,您可能希望使用 StringBuilder 而不是 String 来构建反向 字符串。这可能会更有效(尽管 JVM 本身可能会自行替换 StringBuilder)。

关于java - 从最后一个字符开始向后迭代 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54919198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com