[英]Error after compiling Java project : Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 0
[英]Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 4
輸入Long 123456時出現此錯誤
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at thuchanh01.Baitap05.sumDigits(Baitap05.java:17)
at thuchanh01.Baitap05.main(Baitap05.java:31)
我的代碼:(請注意,代碼仍然完整,我已經輸入了一些打印語句以進行檢查)
package thuchanh01;
import java.util.Scanner;
public class Baitap05 {
private static Scanner input;
public static int sumDigits(long n)
{
String arrayN = Long.toString(n); //conver long to string
int len = arrayN.length(); //length of string
Character[] array = new Character[len]; //create char array with length = length string
int sum = 0;
for(int i = 0; i<=len; i++)
{
array[i] = new Character(arrayN.charAt(i)); //assign array[i] = arrayN[i]
sum = sum + array[i]; //result sum
}
return sum;
}
public static void main (String[] args)
{
long dayso;
long sum = 0;
input = new Scanner(System.in);
System.out.println("Nhap vao day so = ");
dayso = input.nextLong();
sum = sumDigits(dayso);
System.out.println("Tong can tim = " + sum);
}
}
數組的有效索引范圍是0
到len - 1
,但是您的for
循環嘗試使用等於len
的索引。
for(int i = 0; i<=len; i++)
更改為
for(int i = 0; i<len; i++)
在i
等於len - 1
的循環之后停止。
要對數字求和,您必須考慮以下事實,例如char
'2'
的數值不為2
; Unicode(和ASCII)代碼是50
。 實際上,所有從'0'
到'9'
范圍是48
到57
。
從字符中減去char'0 '0'
以獲取實際的數值,因為'2' - '0'
為2
。
sum = sum + array[i] - '0';
for
循環應為:
for (int i = 0; i < len; i++) {
代替
for (int i = 0; i <= len; i++) {
字符從索引0
開始,到索引arrayN.length() - 1
。
for(int i = 0; i<=len; i++)
{
array[i] = new Character(arrayN.charAt(i)); //assign array[i] = arrayN[i]
sum = sum + array[i]; //result sum
}
更改為i <len
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.