运行时Error_String索引超出范围Exception_Printing字符串奇偶索引

问题描述

代码

导入java.io. ; 导入java.util。;

公共类解决方案{

public static void main(String[] args) {
    
    Scanner sc = new Scanner(system.in);

    int n = sc.nextInt();
    String[] sa = new String[n];
    for(int i=0;i<n;i++){

        sa[i] = sc.nextLine();
    }
        String odd="";
        String even="";
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<sa[i].length();j++)
            {
             if(j%2!=0){
               odd = odd+sa[j].charat(j);
            }
            else {
                even = even+sa[j].charat(j);
            }
       
            }
            System.out.println(odd+" "+even);
            }
}

}

ISsue:运行代码时出现运行时异常。 ->字符串索引超出范围异常

解决方法

您可以尝试以下代码。这是因为在 nextInt()

之前调用了 sc.nextLine() 之类的方法

问题在于nextInt()不使用'\ n',因此对nextLine()的下一次调用将使用它,然后它等待读取下一个元素的输入。

在调用 nextLine() 之前,您需要消耗'\ n',或者也可以直接调用 nextLine() 以获取数组大小。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter Array size");
        int n = Integer.parseInt(sc.nextLine());
        String[] sa = new String[n];
        for (int i = 0; i < n; i++) {
            System.out.println("Enter Element "+i);
            String val = sc.nextLine();
            sa[i]=val;
        }
        String odd = "";
        String even = "";
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < sa[i].length(); j++) {
                if (j % 2 != 0) {
                    odd = odd + sa[j].charAt(j);
                } else {
                    even = even + sa[j].charAt(j);
                }

            }
            System.out.println(odd + " " + even);
        }
    }