我对Java很陌生,而且做完作业我做了这个练习:
编写一个java程序,它可以从键盘上取一个单词并将其显示为
("hello" --> "olleh")
这就是我编写程序的方式
import java.util.*;
import java.lang.*;
public class Inverti {
public static void main(String[] args) {
System.out.println("digiti una parola o una frase, essa sara' stampata a video alla rovescia");
Scanner tastiera = new Scanner(System.in);
String invertire = tastiera.nextLine();
for (int i = 0; i < invertire.length();) {
invertire.replace(invertire.charAt(i), invertire.charAt(invertire.length() - i));
i++;
}
System.out.print(invertire);
}
}
(我是意大利人,所以请注意“tastiera”的意思是“键盘”和“digiti una parola o una frase,essaaràtampataaa video alla rovescia”的意思是“输入一个单词,它将显示为反转”)< / p>
程序被编译,但之后,在输入单词:
之后exception in thread main java.lang.stringindexoutofboundsexception: string
index out of bounds: 6 (if string.length() is 6) or 5 (if string.length() = 5).
我在发帖前寻找其他类似问题的答案,但没有任何帮助,对不起,如果问题的格式可能不对。
答案 0 :(得分:1)
如果您的线长度为6,则表示可能性范围为[0,5]
然后,如果我们将i
设为0,将invertire
设为6将获得以下评估:
invertire.charAt(6 - 0)
结果当然是invertire.charAt(6)
未出现在范围内,而且是导致异常的原因。
修正:
invertire.charAt(invertire.length() - i - 1)
答案 1 :(得分:0)
我会做这样的事情:
Scanner tastiera = new Scanner(System.in);
String input = tastiera.nextLine();
StringBuilder inverse = new StringBuilder();
for (int i = 0; i < input.length();i++) {
inverse.append(input.charAt(input.length()-1-i));
}
System.out.print(inverse);