2015-03-31 35 views
1

這項計劃的目的是打印出一個消息,說「你錯過了」每次座標entered.However,如果輸入了重複的座標,它應該說「這個座標已經存在「。ArrayList的不列入加userinput在Java

我同時使用了2個arraylist,獨立存儲x和y的值。我無法理解我的代碼出了什麼問題。if語句似乎根本無法工作,並且userinput也似乎沒有添加到陣列列表。

Scanner a=new Scanner(System.in); 

//Arraylist stores all entered x values. 
ArrayList<Integer> XValues=new ArrayList<Integer>(); 
//Arraylist stores all entered y values. 
ArrayList<Integer> YValues=new ArrayList<Integer>(); 

int Nooftries=0; 
int xcoord; 
int ycoord; 

for(int i=0;i<10;i++) 
{ 
    Nooftries++; 
    System.out.println("This is guess #"+Nooftries); 

    System.out.print("Please input your x location (0-3) : "); 
    xcoord=a.nextInt(); 
    System.out.print("Please input your y location (0-3) : "); 
    ycoord=a.nextInt(); 

    XValues.add(xcoord); 
    YValues.add(ycoord); 


    for(int c=0;c<XValues.size();c++) 
    { 

     if(xcoord==XValues.get(c) && ycoord==YValues.get(c)) 
     { 

      System.out.println("You've already picked that spot.\n"); 
      break; 
     } 
     else 
     { 
      System.out.println("You missed!"); 
     } 
    } 
} 
+0

不要嘗試和評估用戶是否輸入了給定的單元格後,您已經添加了值 – MadProgrammer 2015-03-31 01:07:59

+0

我確定他們是其他數據結構,將您的目標列入其中 – 2015-03-31 01:08:08

+0

http://junit.org/ < ---你新的最好的朋友。 – MarkOfHall 2015-03-31 14:43:31

回答

0

你這樣做:

XValues.add(xcoord); 
YValues.add(ycoord); 

而且然後你檢查。既然你已經添加了最近的輸入值,當然你的數組在你以後檢查時會包含這些值。

你會想加入前檢查。或者你可以只檢查多達XValues.size() - 1,但加入之前做檢查更清楚地反映了你的意圖。

if陳述正在工作;你的程序完全按照你所說的去做。你只需要告訴它做正確的事情!

你的邏輯其餘一眼看起來不錯。

0

你有for循環之前添加xcoordycoord到數組列表,所以當然for循環將發現他們,並表明You've already picked that spot。您應該在for循環之後添加它們。