我正在尝试执行一个程序,其中用户可以输入一个字符串,该字符串将转换为字符数组。该计划有三个功能:
我认为我的代码在大多数情况下都是正确的,但我似乎无法使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)