2015-02-24 79 views
-2

我目前存儲在ArrayList<Target>類型目標的兩個對象。然後我將它們循環到名稱爲t的目標變量。 t又是fullScreen.find(t)方法的參數。「爲」循環對象 - 無法讓它工作

這是工作完美,如果我只使用一個目標,沒有循環,沒有ArrayList。當我使用它們時,它不起作用。

代碼:

public void loopButton() { 
    for(int i = 0; i < 1000; i++) { 
     loopTargets(); 
     findButton(); 
     sleep(); 
    } 
} 

public void findButton() { 
    try { 
     ScreenRegion flix = fullScreen.find(t); 
     ScreenRegion found = fullScreen.wait(t,5000); 
     mouse.click(found.getCenter()); 
     System.out.println("Found"); 
    } catch(NullPointerException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

public Target loopTargets() { 
    for(int i = 0; i < targets.size(); i++) { 
     t = targets.get(i); 
    } 
    return t; 
} 
+2

這裏是**每個循環**? – 2015-02-24 14:40:13

+2

目前還不清楚你的'loopTargets'方法是做什麼的。它返回一個單值,它總是列表中的最後一個值 - 但是你調用它的方式,你忽略了返回值。當然,它也會保留它在't'變量中找到的最後一個,你沒有顯示它的聲明。你期望什麼*達到*?請注意,你對'loopButton'中的'i'變量沒有做任何事情 - 你爲什麼循環? – 2015-02-24 14:40:19

+0

您無法理解循環和函數調用的工作原理。 – 2015-02-24 14:47:26

回答

1

你可能無法理解循環和功能是如何調用的作品。

要讓它工作,請調整你這樣的代碼:

public void loopButton() { 
    for(int i = 0; i < 1000; i++) { 
     for(int i = 0; i < targets.size(); i++) { 
      Target t = targets.get(i); 
      findButton(t); 
     } 
     sleep(); 
    } 
} 

public void findButton(Target t) { 
    try { 
     ScreenRegion flix = fullScreen.find(t); 
     ScreenRegion found = fullScreen.wait(t,5000); 
     mouse.click(found.getCenter()); 
     System.out.println("Found"); 
    } catch(NullPointerException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

的問題與您的代碼,那是你loopTarget methos總是返回在列表中的最後Target

public Target loopTargets() { 
    for(int i = 0; i < targets.size(); i++) { 
     // sets target in each iteration, but does not use it 
     t = targets.get(i); 
    } 
    return t; // return the last target set 
} 

最後,遍歷目標的最佳選擇是使用foreach循環:

public void loopButton() { 
    for(int i = 0; i < 1000; i++) { 
     for(Target t : targets) { 
      findButton(t); 
     } 
     sleep(); 
    } 
} 
+0

非常感謝!更好,並完美的作品:) – user3650211 2015-02-24 14:44:54

+0

儘快接受盡可能人性化,太低代表悲傷地upvote – user3650211 2015-02-24 14:58:22

0

loopTargets總是返回targets中的最後一個元素。

要用於每個targettargetsfindButton代碼:

for(Target target : targets) { 
    t = target; 
    findButton(); 
}