我无法在程序中找出java.lang.ArrayIndexOutOfBoundsException的原因

时间:2016-01-25 16:18:44

标签: java arrays

我正在尝试执行一个程序,其中用户可以输入一个字符串,该字符串将转换为字符数组。该计划有三个功能:

  1. toString():再次将char数组作为字符串返回
  2. isFull():检查数组是否已满
  3. append():允许用户输入另一个字符
  4. 我认为我的代码在大多数情况下都是正确的,但我似乎无法使append()工作。这是我的代码:

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class CharSeq {
    
    private static Scanner sc = new Scanner(System.in);
    private static final int maxLength = 5;
    private static char[] cArray = new char[maxLength + 1];
    private static String input;
    private static char append, yesNo;
    private static int cLength = 0;
    
    public static void main(String[] args) {
        CharSeq cs = new CharSeq();
    
        System.out.println("Input sequence: ");
        input = sc.next();
        cArray = input.toCharArray();
        cLength = cArray.length;
        System.out.print(cs.toString());
        System.out.print(" (space left: " + (maxLength - cLength) + ")");
        cs.append(yesNo, append);
        System.out.println(cs.toString());
    }
    
    public String toString(){
        String s = "";
        for(int i = 0; i < cLength; i++){
            s = s + cArray[i];
        }
        return s;
    }
    
    public boolean isFull(){
        if(cLength == maxLength){
            return true;
        }
        else{
            return false;
        }
    }
    
    public void append(char a, char c){
        if(isFull()){
            System.out.println("\nCharSeq is full.");
        }
        else{
            System.out.println("\nDo you want to add sequence? [Y/N]");
            a = sc.next().charAt(0);
            if(a == 'Y' || a == 'y'){
                System.out.println("Input sequence: (space left: " + (maxLength - cLength) + ")");
                c = sc.next().charAt(0);
                cArray[++cLength] = c;
            }
    
        }
    
    }
    
    }
    

    这是堆栈跟踪:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at CharSeq.append(CharSeq.java:53)
    at CharSeq.main(CharSeq.java:22)
    

0 个答案:

没有答案