簡體   English   中英

索引超出范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM