テーブルを作成するための文字列を作成するプログラムがありますが、「ループを離れる」必要があるまで(allClearをtrueにする必要があるまで)は問題ありません。リストのエラー<String> Javaの場合
文字列retを印刷しようとしましたが、常に "| |"のような文字列があります。それ以降、リストlにはすべてのStringが ""に設定されています。その場合、メソッドallClearはtrueを返す必要があります。
これは、テーブルの列を作成するメソッドのコードで、すべての文字列とそのテーブルの持つ列数を取得し、すべてのテーブル文字列を含むStringを返します。これはallClear方法である
public static String buildNCol(List<String> l, int n)throws NotEnoughStringsException{
if(l.size()<n)throw new NotEnoughStringsException("Not enough Strings given");
int colSize = colSize(n);
int colN,curChar,curSize;
String ret="",temp="";
boolean check = true;
while(check){
ret="";
for(colN=0;colN<n;colN++){
temp = getLine(l,colN,colSize);
for(curSize=temp.length();curSize<colSize;curSize++)temp+=' ';
if(colN!=n-1)temp+=" | ";
ret+=temp;
}
ret+='\n';
for(colN=0;colN<n;colN++)l.set(colN,cutString(l.get(colN)));
if(allClear(l,n))check=true; //This is where the error happens
}
return ret;
}
、 "コル3 |コル2 |コル3 \のNcoI 1 | |コル2コル1":
それはのような文字列を返す必要があります。このメソッドは、リスト内の最初のn個の文字列がすべて ""、ヌルまたは "\ n"に設定されているかどうかをチェックします。
private static boolean allClear(List<String> l,int n){
int i;
String temp;
for(i=0;i<n;i++){
temp = l.get(i);
if(temp!=null&&temp.length()>1) return false;
if(temp.length()==1&&temp.charAt(0)!='\n')return false;
}
return true;
}
'check'は最初は' true'に設定され、 'allClear'が' true'を返すとき条件付きで 'true'に設定されます。 'while'ループの中に' check'を 'false'に設定したり、' break'を発行するものはありませんので、**永遠にループします**。 –
今は[小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を理解するのに良い時期のようです。 – Dukeling
@KevinAnderson私はそれがエラーであるとは信じられません、あなたは私に多くの時間をここに保存しました、ありがとうございました – Ash