嘿伙计我正在制作一个程序,它会反转用户的输入。 目前我的代码是
import java.util.*;
public class Reverse {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> input = new ArrayList<>();
while (in.hasNextLine())
input.add(in.nextLine());
for (int x = 0; input.size() >= x; x++) {
String reverse = "";
for (int z = input.get(x).length(); z > 0; z--) {
reverse += input.get(x).charAt(z - 1);
}
System.out.println(reverse);
}
}
}
但我收到错误的地方
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at Reverse.main(Reverse.java:12)*
非常感谢任何帮助,谢谢!
答案 0 :(得分:2)
更改for
循环的范围:
for (int x=0; x < input.size(); x++) {
String reverse = "";
for (int z=input.get(x).length(); z > 0; z--) {
reverse += input.get(x).charAt(z - 1);
}
System.out.println(reverse);
}
访问List
从零开始,因此在外部循环中,对于大小为3的列表,x
索引所需的最大值为2。
答案 1 :(得分:0)
在最后一个iteraton上,“x”等于input.size(),因此元素input.get(x)将不存在,在第二个“for”循环中。
答案 2 :(得分:0)
input.size() >= x
在最后一次迭代中,x等于列表的大小。由于列表索引从0开始,这是一个无效的索引。
在Java中按索引循环的惯用方法是
for (int x = 0; x < size; x++)
你应该使用这种惯用的方式。
但对于这样一个循环,你不需要索引,你应该使用for-each循环:
for (String s : input) {
这种方式更安全,无论列表类型如何都保证有效,并且更具可读性。
答案 3 :(得分:0)
package com.stackwork;
import java.util.*;
public class Reverse {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> input = new ArrayList<String>();
while (in.hasNextLine())
input.add(in.nextLine());
// prints the size of array
System.out.println("the array size :" + input.size());
for (int x = 0; input.size() > x; x++) {
//Prints the incremented x value at each step
System.out.println("the x value inside the for loop :" + x);
String reverse = "";
for (int z = input.get(x).length(); z > 0; z--) {
//prints the length of each string in the array
System.out.println("the value of z is :" + z);
reverse += input.get(x).charAt(z - 1);
//prints the value in each step of reverse
System.out.println("each step of reverse " + reverse);
}
System.out.println(reverse);
}
}
}