0
我知道這個在線的另一個問題,但我無法讓我的代碼工作。我不知道我的if語句是不正確的還是其他的。這是我以前的問題的延伸 Remove duplicates in a 2D array and add the corresponding values跟蹤for循環中的以前的數字不起作用
問題仍然是相同的,但除了使用二維數組,而不是使用二維數組我不使用for循環跟蹤以前的數字但是當我將數字打印到控制檯時,我會得到重複的r值。我希望有人能幫我看看這個錯誤。提前致謝!
這裏是我工作的代碼:
double rMax = -1;
double previous;
for(int i =1; i< 256; i++){
for(int y =1; y< 256; y++){
//image.getPixel(i, y);
String x = image.getLocationAsString(i, y);
String n = image.getValueAsString(i, y);
String delim = ", value=";
String [] tokens = n.split(delim);
double num = Double.parseDouble(tokens[1]);
//if(image.getR() < 1.43){
String [] t = x.split("r=");
String[] b = t[1].split(" mm/c");
//System.out.print("Meet b: "+b[0]);
double radius = Double.parseDouble(b[0]);
String [] theta = x.split("theta= ");
String [] token2 = theta[1].split(Character.toString(IJ.degreeSymbol));
float thetaNum = Float.parseFloat(token2[0]);
//System.out.print(" This is the theta value: "+thetaNum+" ");
if(radius == rMax){
rMax = radius;
}
String prevX = image.getLocationAsString(i-1, y-1);
String prevN = image.getValueAsString(i-1, y-1);
String [] prevT = prevX.split("r=");
String[] prevB = prevT[1].split(" mm/c");
//System.out.print("Meet b: "+b[0]);
double prev_radius = Double.parseDouble(prevB[0]);
previous = prev_radius;
if(previous == radius){
System.out.println(radius);
}
else{
System.out.println(radius);
}
//if(thetaNum <= 180.00){
data.add(radius, num);
//}
//}
}
}
System.out.println(rMax);
這是它打印:
1.59
1.59
1.58
1.58
1.57
1.56
1.56
1.55
1.55
1.54
1.54
1.53
1.52
1.52
對不起,我忘了在複製粘貼時的問題中添加了這個問題,但它似乎還沒有解決問題。我不知道是否它的if語句不正確。原因我只希望重複打印r值一次而不是兩次。所以我不知道代碼有什麼問題。 – selena
我在我的問題中添加了最近更新的代碼。但我似乎無法擺脫重複。 – selena
好的,所以現在你的代碼完成同樣的事情,不管是否有'radius == previous'。 「if」和「else」塊是相同的,無論如何,這些值都會被添加到「data」集合中。 –