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