[英]Index out of range
我希望我的程序混合到數組中的字符串。 字符串來自 .dat 文件。 我不斷收到索引超出范圍錯誤。
輸入文件:3 xyz abc abc rstuvwxy rstuv ab
想要的輸出:axbycz rasbtcuavbwcxayb rasbtaubva
我得到的錯誤:
線程“main”中的 arbsctException java.lang.StringIndexOutOfBoundsException: String index out of range: 3 at java.lang.String.charAt(Unknown Source) at test.main(test.java:39)
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class test {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("strings.dat");
Scanner infile = new Scanner(file);
String string1;
String[] mingle = new String[2];
int length;
infile.nextLine();
while (infile.hasNextLine()) {
string1 = infile.nextLine();
for (int i = 0; i < mingle.length; i++) {
mingle = string1.toLowerCase().split("[\\s.]");
}
System.out.println(mingle[1] + mingle[0]);
if (mingle[0].length() > mingle[1].length()) {
length = mingle[0].length();
}
else if (mingle[1] == mingle[0]) {
length = mingle[1].length();
}
else {
length = mingle[1].length();
}
for (int i = 0; i < length; i++) {
System.out.print(mingle[0].charAt(i % length));
System.out.print(mingle[1].charAt(i % length));
}
}
infile.close();
}
}
線程“main”中的 arbsctException java.lang.StringIndexOutOfBoundsException: String index out of range: 3 at java.lang.String.charAt(Unknown Source) at test.main(test.java:39)
第二個 for 循環並不總是有效。 由於長度的值要么是mingle[0] 的長度,要么是mingle[1] 的長度,所以不能在同一個循環中同時擁有兩個數組元素。
例如。 假設mingle[0]的長度是10,而mingle[1]的長度是11。因為mingle[1]的長度更大,所以length的值應該是'11'。 在這種情況下,在 for 循環的第 11 次迭代(即當 i=10 時)然后
//At 11th iteration, i=10, length=11
for (int i = 0; i < length; i++) {
System.out.print(mingle[0].charAt(i % length)); //equivalent of mingle[0].charAt(10)
System.out.print(mingle[1].charAt(i % length));//equivalent of mingle[1].charAt(10)
}
由於可以從 0-9 訪問 mingle[0] 中的字符,因此在訪問第 10 個元素時會得到 java.lang.StringIndexOutOfBoundsException
我想這就是你想要做的。 請注意,循環使用長度中的最小值。 您可以使用 substr 打印任一字符串的多余部分。
private void merge( s1 String, s2 String ){
int len = Math.min( s1.length(), s2.length() );
for( int i = 0; i < len; ++i ){
System.out.print( s1.charAt(i) + s2.charAt(i) );
}
System.out.println( s1.substr(len) + s2.substr(len) );
}
#Python程序
IndexError:列表索引超出范圍
例子:
團隊 =["priya","amanda","sruthy"]
打印(團隊 [3])
如果您嘗試在 3 的位置打印值,則會出現索引錯誤,因為這超出了您的列表大小,並且列表索引從零開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.