我希望我的程序能够与数组中的字符串混合。字符串来自.dat文件。我不断得到索引超出范围错误。
输入文件: 3 xyz abc abc rstuvwxy rstuv ab
想要输出: axbycz rasbtcuavbwcxayb rasbtaubva
错误我得到了:
arbsctException in thread" main" java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:3 在java.lang.String.charAt(未知来源) 在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();
}
}
arbsctException in thread&#34; main&#34; java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 3在java.lang.String.charAt(未知来源)at test.main(test.java:39)
答案 0 :(得分:1)
第二个for循环并不总是有效。由于length的值可能是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)
}
由于mingle [0]中的字符可以从0-9访问,因此访问第10个元素时会得到java.lang.StringIndexOutOfBoundsException
答案 1 :(得分:1)
我想这就是你想要做的。请注意,循环使用最小长度。您可以使用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) );
}
答案 2 :(得分:0)
#Python 程序
IndexError: 列表索引超出范围
示例:
团队 =["priya","amanda","sruthy"]
打印(团队[3])
如果您尝试在 3 的位置打印值,则会出现索引错误 发生这种情况是因为这超出了您的列表大小,并且列表索引从零开始。