Java 正在反转整数,但获取'StringIndexOutOfBoundsException'`
我正试图写一个程序来反转以负号开始的整数。例如,如果数字为Java 正在反转整数,但获取'StringIndexOutOfBoundsException'`,java,Java,我正试图写一个程序来反转以负号开始的整数。例如,如果数字为-123,则输出应为-321。但我得到了: StringIndexOutOfBoundsException:字符串索引超出范围:4 一致: result += myString.charAt(i) + ""; 代码的逻辑有什么问题 public class ReverseInteger { public static void main(String[] args){ int x = -123;
-123
,则输出应为-321
。但我得到了:
StringIndexOutOfBoundsException:字符串索引超出范围:4
一致:
result += myString.charAt(i) + "";
代码的逻辑有什么问题
public class ReverseInteger {
public static void main(String[] args){
int x = -123;
String myString = Integer.toString(x);
String result = "";
if(myString.charAt(0) == '-'){
char sign = myString.charAt(0);
for(int i = myString.length(); i > 1; i--){
result += myString.charAt(i) + "";
}
result = sign + "" + result;
}
System.out.println(result);
}
}
java中的
字符串
或数组的索引是基于零的。这意味着索引0
是字符串中的第一个字符,mystring.length()-1
是字符串中的最后一个字符mystring.length()
超过了字符串的末尾
由于您在索引mystring.length()
处访问数组,因此超出了数组的边界,因此出现了异常
您想从索引mystring.length()-1
开始循环。此外,您还需要继续向下到索引1
,而不是像在循环中那样排除该索引
像这样:
for (int i = myString.length() - 1; i > 0; i--)
这是因为您正在使用
for(int i = myString.length(); i > 1; i--){
result += myString.charAt(i) + "";
}
String.length()
返回从1到X的长度。0表示空字符串
您需要添加-1
for(int i = myString.length() - 1; i > 0; i--){
result += myString.charAt(i) + "";
}
下面这一行似乎就是问题所在
result += myString.charAt(i) + "";
将其更改为:
result += myString.charAt(i-1) + "";
您认为StringIndexOutOfBoundsException:字符串索引超出范围:4意味着什么?它应该是
i>=0
,但10分钟后仍会接受答案:)@pb2q@John您可以使用i>0
或i>=1
,但不能使用i>=0
,因为您在查找符号时专门处理索引0。所以你不想碰循环中的索引0。哦,对不起,别担心!我做了I>=1
,在这里犯了一个错误,说I>=0。再次抱歉,谢谢@PB2Q嘿,没问题@John。这是一个简单的概念,但可能需要很长时间才能自然实现