java - 在Java中获取“线程“主”java.lang.StringIndexOutOfBoundsException中的异常”
问题描述
输出应该是用自己的行向后打印的数组的每个单词
public class Main
{
public static void main(String[] args)
{
String [] list = {"every", "nearing", "checking", "food", "stand", "value"};
String reverse = "";
int length = list.length;
for(int j=0; j<list.length; j++)
{
String word = list[j];
for ( int i = length - 1 ; i >= 0 ; i-- )
{
reverse = reverse + word.charAt(i);
}
System.out.println(reverse);
}
}
}
但我不断收到这条消息
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String
index out of range: 5
at java.lang.String.charAt(String.java:658)
enter code here`at Main.main(Main.java:13)
解决方案
我稍微清理了你的代码。不要依赖不会提高代码可读性的临时变量。尝试使用for-each
循环(它们提高了可读性)。应用这两点,给了我们
String[] list = { "every", "nearing", "checking", "food", "stand", "value" };
for (String word : list) {
for (int i = word.length() - 1; i >= 0; i--) {
System.out.print(word.charAt(i));
}
System.out.println();
}
这是基于您的原始代码。就个人而言,我更喜欢使用StringBuilder
and its'reverse()
方法。喜欢,
for (String word : list) {
System.out.println(new StringBuilder(word).reverse());
}
或在 Java 8+ 中,map
类似
Arrays.stream(list).map(s -> new StringBuilder(s).reverse())
.forEachOrdered(System.out::println);
推荐阅读
- javascript - javascript中的数组数组到对象数组的数组
- ios - objc 方法在我的 JS 端没有被识别
- linux - AWS EC2 packet_write_wait:连接到 UNKNOWN 端口 65535:管道损坏
- ruby-on-rails - 添加新测试时,以前工作测试的权限被拒绝
- javascript - 问:在自执行功能中,谁被分配了数字 10
- windows - 浏览到我的自定义本地 HTTPS 服务器时如何避免无效证书警告?
- android - 如何使用 Kotlin 过滤 RecyclerView?
- javascript - React 类型号 textInput 替换逗号
- html - 如何对齐表格中的两列 | HTML 电子邮件签名
- amazon-dynamodb - 我可以在二级索引中查询 DynamoDB 中的值列表吗?