我是初學者,誰能幫我弄清楚我們正在做什麼。我試圖讀取一個字符串並將字符串的每個字符存儲在一個數組中。Java:線程「main」中的異常java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:
import java.util.Scanner;
public class CoreMainDigitExtractor {
static Scanner inputString = new Scanner(System.in);
public static void main(String[] args) {
digitExtractor ExtracDig = new digitExtractor();
System.out.println("Enter a String to Extract and Display Vertically in Reverse Order : ");
String input1 = inputString.nextLine();
System.out.println("User input String is : " + input1);
System.out.println("Calling Method 'OrderByMaths' in Object 'ExtracDig' of Class 'digitExtractor', with User Input String....'"+input1+"'");
ExtracDig.OrderbyMaths(input1);
}
}
public class digitExtractor {
int tNumber;
public digitExtractor() {
// TODO Auto-generated constructor stub
}
public void OrderbyMaths(String numberSequence) {
System.out.println("OrderbyMatch : Inside Method 'OrderbyMaths'....");
System.out.println("OrderbyMatch : Initializing a variable of type int 'tNumberLength'.");
int tNumberLength = numberSequence.length();
System.out.println("OrderbyMatch : Variable Initialized of type int 'tNumberLength'.");
System.out.println("OrderbyMaths : Capture length of User Input String into Variable 'tNumberLength'.");
System.out.println("OrderbyMaths : The length of User Input String in Variable 'tNumberLength' is '" + tNumberLength + "'.");
System.out.println("OrderbyMatch : Initializing an Array of type int 'arrNumberSequence'; with Size of Array equal to 'tNumberLength'.");
char arrNumberSequence[] = new char[tNumberLength];
System.out.println("OrderbyMatch : Initialized Array 'arrNumberSequence' with Size '" + arrNumberSequence.length + "'");
int i = 0;
while (i <= arrNumberSequence.length){
arrNumberSequence[i] = numberSequence.charAt(i);
System.out.println("OrderbyMatch : Value in Array Slot '"+arrNumberSequence[i]+"' is '"+ numberSequence.charAt(i)+"'");
i++;
}
}
}
輸出
輸入字符串提取和逆頁序縱向顯示:
HACK
用戶輸入字符串是:HACK
在對象上調用方法 'OrderByMaths'類'digitExtractor'的'ExtracDig',用戶輸入字符串....'HACK'
OrderbyMatch:內部方法'OrderbyMaths'...
OrderbyMatch:初始化一個int'tNumberLength'類型的變量。
OrderbyMatch:變量已初始化爲int'tNumberLength'類型。
OrderbyMaths:將用戶輸入字符串的長度捕獲到變量'tNumberLength'中。
OrderbyMaths:變量'tNumberLength'中用戶輸入字符串的長度爲'4'。
OrderbyMatch:初始化一個int類型的數組'arrNumberSequence';數組大小等於'tNumberLength'。
OrderbyMatch:初始化數組 'arrNumberSequence' 與尺寸 '4'
OrderbyMatch:在陣列插槽 'H' 值是 'H'
OrderbyMatch:值在陣列插槽 'A' 是 'A'
OrderbyMatch:在陣列插槽 'C' 的值是 'C'
OrderbyMatch:在陣列插槽 'K' 值是 'K'
在異常THRE ad「main」java.lang.StringIndexOutOfBoundsException:String index超出範圍:4 at java.lang.String.charAt(Unknown Source) at digitExtractor.OrderbyMaths(digitExtractor.java:23) at CoreMainDigitExtractor.main(CoreMainDigitExtractor。的java:16)
問候
Dwenish
我想,同時'我<= arrNumberSequence.length'是總是如此在循環,'我<= numberSequence.length'沒有按」必須是真實的。 – cangoektas 2015-02-11 20:59:02
你會不會建議不使用WHILE循環? – dwenish 2015-02-11 21:06:41
我稍微改了一下代碼,雖然在代表性方面看起來更好。但是,錯誤仍然存在。 – dwenish 2015-02-11 21:07:18