"MiniString"のクラスを作成しています。このクラスは、オブジェクトMiniStringのインスタンスメソッドでいっぱいです。すべてのMiniStringにはインスタンス変数char []があります。私のメソッドをテストするとき、substring()メソッドでどこが間違っているのか分かりません。 2つの部分文字列メソッドがあり、一方はintのパラメータを取り、もう一方は2つのintパラメータを取ります。 1つのintパラメータメソッドでエラーが発生し続けます。部分文字列メソッドは、intパラメータで指定されたターゲットMinistring内の位置とターゲットMiniStringの末尾の間の文字で構成される新しいMiniStringを返すものとします。私は私のJUnitテスターになっ保つエラーは以下の通りである:ここではArrayIndexOutofBoundsExceptionエラーが発生しましたが、理由はわかりません
java.lang.ArrayOutofBoundsException:22
at MiniString.substring(MiniString.java:141)
at MiniString.substring(MiniString.java:159)
は、オブジェクトMiniStringのための私のコンストラクタです:
:private char[] miniscule;
MiniString(char[] array){
int i = 0;
miniscule = new char[array.length];
while (i < array.length){
miniscule[i] = array[i];
i++;
}
}
MiniString(String string){
int i = 0;
miniscule = new char[string.length()];
while (i < string.length()){
this.miniscule[i] = string.charAt(i);
i++;
}
}
、ここでは、二つの部分文字列()メソッドのコードです
public MiniString substring(int start, int end){
int i = start;
if (end > start){
char[] temp = new char[end - start];
MiniString range = new MiniString(temp);
while (i < end){
range.miniscule[i] = this.miniscule[i];
i++;
}
return range;
}
else{
char[] temp = new char[1];
MiniString range = new MiniString(temp);
range.miniscule[0] = 0;
return range;
}
}
public MiniString substring(int position){
int start = position;
int end = this.miniscule.length;
char[] temp = new char[end - start];
MiniString output = new MiniString(temp);
output = substring(start, end);
return output;
}
ありがとうございました!あなたの最初のsubstring
方法で
例外があなたを与えている情報を使用するために[i]は失敗するだろうthis.miniscule、I = 0終了= 7 =>、= 0を開始します。例外を指している行はどれですか?つまり、22行目はどの行ですか?そこにはどのような配列アクセスが試みられていますか?今すぐブレークポイントを設定するか、その行の前にprintlnを追加して、使用しようとしているインデックスとアクセスしている配列のarray.lengthを表示してください。あなたがまだそれを把握できない場合は、あなたの質問にその情報を提供してください( "...私は22行目に22行目をマークしました。ここに例外がスローされました。"私はprintlnを追加し、 XXXと配列の長さはXXXです。なぜか分かりません... " –