Java 列表出错<;字符串>;在爪哇

Java 列表出错<;字符串>;在爪哇,java,string,list,Java,String,List,我有一个程序来创建一个字符串来构建一个表,它工作正常,直到我需要“离开循环”(当allClear应该为true时),但它一直返回false 我试着打印字符串ret,它总是得到一个类似“| |”的字符串。由于发生了这种情况,这意味着列表l的所有字符串都设置为“”,在这种情况下,方法allClear应该返回true 这是用于为表构建列的方法的代码,它获取包含所有字符串的列表以及表应包含的列数,然后返回包含所有表字符串的字符串 它应该返回如下字符串:“Col 1 | Col 2 | Col 3\nCo

我有一个程序来创建一个字符串来构建一个表,它工作正常,直到我需要“离开循环”(当allClear应该为true时),但它一直返回false

我试着打印字符串ret,它总是得到一个类似“| |”的字符串。由于发生了这种情况,这意味着列表l的所有字符串都设置为“”,在这种情况下,方法allClear应该返回true

这是用于为表构建列的方法的代码,它获取包含所有字符串的列表以及表应包含的列数,然后返回包含所有表字符串的字符串

它应该返回如下字符串:“Col 1 | Col 2 | Col 3\nCol 1 | Col 2 | Col 3”

publicstaticstringbuildncol(List l,int n)抛出NotEnoughStringsException{

如果(l.size()如Kevin Anderson在评论中所说, check最初设置为true,当allClear返回true时有条件地设置为true。while循环中没有任何内容将check设置为false或发出中断,因此它将永远循环

您可以通过将check设置为false来修复此问题,如下所示:

check = false;

正如@KevinAnderson在评论中所说,程序中的错误是check永远不会变为false,因为我将其编码为“change”当
allClear
返回
true
时,
check
最初设置为
true
,有条件地设置为
true
,而不是false

返回
true
。而
循环中没有任何内容设置
check
false
或发出
中断
,因此它将永远循环。现在看起来像这是一个解决问题的好时机。@KevinAnderson我不敢相信这是个错误,你在这里为我节省了很多时间,感谢返回的方法没有问题。该方法称为“allClear”-如果一个不清楚,它应该返回false-其余的不重要,所以它可以立即返回。除了最佳实践之外。。。
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 = false;