Java 需要帮助修复以下代码的arrayoutofboundary异常吗
如何修复以下代码的arrayOutOfBoundException错误消息。这对我来说似乎在逻辑上是正确的。但我不确定为什么会出现这个错误。需要帮忙吗Java 需要帮助修复以下代码的arrayoutofboundary异常吗,java,arrays,exception,Java,Arrays,Exception,如何修复以下代码的arrayOutOfBoundException错误消息。这对我来说似乎在逻辑上是正确的。但我不确定为什么会出现这个错误。需要帮忙吗 public class list { public String reverseStr(String input){ String reverString = input; int j=0; Character rev[] = new Character[reverString.le
public class list {
public String reverseStr(String input){
String reverString = input;
int j=0;
Character rev[] = new Character[reverString.length()-1];
for(int i= reverString.length()-1;i> 0; --i){
for(j = 0;j<= reverString.length()-1; ++j){
rev[j] = reverString.charAt(i);
}
}
String output = String.valueOf(rev[j]);
return output;
}
public static void main(String args[]){
String reverse = "Ambika";
list li = new list();
System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
}
}
公共类列表{
公共字符串反转(字符串输入){
字符串反转字符串=输入;
int j=0;
字符版本[]=新字符[ReversString.length()-1];
对于(int i=reversString.length()-1;i>0;--i){
对于(j=0;j当内部for循环中断时,j将超出数组边界。
在String output=String.valueOf(rev[j]);
在旁注中,您应该使rev
数组足够大,以使整个字符串都有孔
Character rev[] = new Character[reverString.length()];
(j=0;j)的
hsoJ
您初始化了rev
,大小小于reverString
Character rev[] = new Character[reverString.length()-1];
换成
Character rev[] = new Character[reverString.length()];
实际上,你的嵌套for循环的整个想法是一团糟
public class list {
public String reverseStr(String input) {
String reverString = input;
int j = 0;
char rev[] = new char[reverString.length()];
for (int i = reverString.length() - 1; i >= 0; --i) {
rev[j++] = reverString.charAt(i);
}
String output = new String(rev);
return output;
}
public static void main(String args[]) {
String reverse = "Ambika";
list li = new list();
System.out.println("The reverse of " + reverse + " is "
+ li.reverseStr(reverse));
}
}
你的资料里有很多问题
您正在定义一个长度小于实际大小的数组
Character rev[]=新字符[reverString.length()-1];
应该是,
Character rev[]=新字符[reverString.length()-1];
使用索引打印值
String输出=String.valueOf(rev[j]);
您可以使用for循环打印
for(字符c:rev)
系统输出打印(c);
您不需要两个循环。一个循环就足够了,如下所示
int j=0;
for(int i=reversString.length()-1;i>=0;--i){
rev[j]=反向字符串字符(i);
j++;
}
最后,您不需要单独的数组来保存结果。您可以将结果保存在字符串
或StringBuilder
中
我在你的节目中注意到了几件事。
1.反转字符串不需要两个循环,可以使用一个循环进行遍历,并增加j的值进行移动
int j=0;
for(int i= reverString.length()-1;i>= 0; --i){
rev[j++] = reverString.charAt(i);
}
第二,如果你注意到上面的循环,你会发现它实际上被调用了6次,i的值是(5,4,3,2,1,0),所以你需要一个大小为6的数组,这意味着rev的大小应该是6,这是reverString.length()
请参考下面的代码
public class List {
public String reverseStr(String input){
String reverString = input;
int j=0;
char rev[] = new char[reverString.length()-1];
for(int i= reverString.length()-1;i>= 0; --i){
rev[j++] = reverString.charAt(i);
}
String output =String.valueOf(rev);
return output;
}
public static void main(String args[]){
String reverse = "Ambika";
List li = new List();
System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
}
}
给出完整的stackstrace。您不指定行号。这不是一个益智网站。@OldProgrammerString output=String.valueOf(rev[j])
该行嵌套for循环将替换重复的字符,而不提供反向字符串。请检查该行,它不会回答问题question@Tyler,这很公平,但如果它被用于生产产品中,就没有理由推出自己的产品,因为您不知道一个优雅的解决方案。
public class list {
public String reverseStr(String input) {
String reverString = input;
int j = 0;
char rev[] = new char[reverString.length()];
for (int i = reverString.length() - 1; i >= 0; --i) {
rev[j++] = reverString.charAt(i);
}
String output = new String(rev);
return output;
}
public static void main(String args[]) {
String reverse = "Ambika";
list li = new list();
System.out.println("The reverse of " + reverse + " is "
+ li.reverseStr(reverse));
}
}
int j=0;
for(int i= reverString.length()-1;i>= 0; --i){
rev[j++] = reverString.charAt(i);
}
public class List {
public String reverseStr(String input){
String reverString = input;
int j=0;
char rev[] = new char[reverString.length()-1];
for(int i= reverString.length()-1;i>= 0; --i){
rev[j++] = reverString.charAt(i);
}
String output =String.valueOf(rev);
return output;
}
public static void main(String args[]){
String reverse = "Ambika";
List li = new List();
System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
}