2012-10-13 26 views
2

我試圖做出一個方法來告訴我,如果我的數組包含任何重複的座標,如果是這樣設置一個布爾值爲true,否則,將其設置爲false。任何想法爲什麼它不斷返回false?方法應該檢查數組本身?

public void check(){ 
    if(point[particle].equals(point) == true){ 
     check = true; 
    } else { 
     check = false; 
    } 
} 

點=點陣列

顆粒=當前顆粒

檢查=我的布爾用於檢查

回答

0

你有兩個名稱相同的對象,看point是一個點陣列,那麼point是我猜的字符串!

你認爲的:

points = Point array 

point = the current point 

嘗試這樣的:

import java.awt.Point; 

public class Dice{ 
    public static Point[] point; 

    public static boolean check(Point _point){ // Here _point is being searched in point array. 
     int particle; 
     for(particle = 0; particle < point.length; particle++){ 
      System.out.println("Comparing "+ point[particle].getX() + " and " +_point.getX()); 
      System.out.println("Comparing 2 "+ point[particle].getY() + " and " +_point.getY()); 
      if(point[particle].getX() == _point.getX() && point[particle].getY() == _point.getY()){ // 
       return true; // if _point is into the array 
      } 
     } 
     return false; 
    } 

    public static void main(String a[]) { 
     point = new Point[10]; 
     for(int i= 0; i < point.length; i++) 
      point[i] = new Point(10, i); 

     System.out.println(check(new Point(10, 5))); 
    } 
} 
+0

但是,如果點是整個陣列和點[顆粒]爲當前點那麼它應該工作當不可它呢? – user1610541

+0

問題是兩者都具有相同的名稱。重命名其中一個! – slackmart

+0

因爲它們是一樣的東西!我試圖查看當前點是否等於已存儲的點。 – user1610541

2

看的這部分代碼(從if的條件 - 聲明):

point[particle].equals(point) 

我認爲有一些variable shadowing(或類似的東西)在這裏。 point似乎是一個數組,但您正在測試此數組的成員和數組本身之間的平等 - 這就是爲什麼您繼續獲得false。檢查你的變量名稱,看看你是否意外地爲兩個不同的變量使用了相同的名稱。


作爲一個說明,

if (condition == true) { 
    check = true; 
} else { 
    check = false; 
} 

可以簡化爲

check = condition;