我的代码需要帮助。它有一个运行时错误,其中循环仅在中途停止...我做了一些检查,发现它只循环直到外循环的中间部分。我做了一个“塞子”,每次将一个术语添加到数组列表时,大小都会发生变化,因此新术语将再次被检查<-这是原因吗?塞子是否应该始终保持恒定状态?
无论如何,请就如何改进代码提出您的建议。 代码是:
public void mainOperation() {
for(int i = 0; i<mainRec.size(); i++) {
int marker = 0;
int sizeC = mainRec.size();
for(int k = i+1; k<sizeC; k++) {
String var1 = elementBinValue(mainRec.get(i));
String var2 = elementBinValue(mainRec.get(k));
if(compareTo(var1, var2)==1) {
marker++;
mainRec.add(mainRec.get(i) + " " + mainRec.get(k));
System.out.println("CHECKER: " + mainRec.get(i) + "-" + mainRec.get(k));
}
}
if(marker==0)
markedP.add(mainRec.get(i));
}
}
编辑:为了更直观地展示,我将在此处添加elementBinValue()和compareTo()方法
public String elementBinValue(String input) { //gets the bin value of the whole element
StringTokenizer element = new StringTokenizer(input);
String firstElement = toBinary(Integer.parseInt(element.nextToken()));
if(element.countTokens()==0) { //RETURNS the whole elements' String value (1 String)
return firstElement;
}
else {
String newElement = "";
while(element.hasMoreTokens()) {
String compBin = toBinary(Integer.parseInt(element.nextToken()));
int iterator = 0;
while(iterator<firstElement.length()) {
if(firstElement.charAt(iterator)==compBin.charAt(iterator))
newElement += firstElement.charAt(iterator);
else
newElement += "-";
}
}
return newElement;
}
}
public int compareTo(String a, String b) {//returns 1 if they can be grouped else 0
int counter = 0;
int iterator = 0;
//String newElement = "0";
while(counter<2 && iterator < 8) {//The number 8 is for the binary size
if((a.charAt(iterator))!=((b.charAt(iterator))))
counter++;
iterator++;
}
if(counter<2)
return 1;
else return 0;
}