2015-12-14 96 views
-1

我無法'弄清楚爲什麼我的代碼不工作,特別是它給了我ArrayList.get(i)== ArrayList.get(i)的問題;在Java中,它應該返回並比較這兩個數字,是不正確的?通過get方法比較ArrayLists扇區

package homework.pkg9; 

import java.util.ArrayList; 
import java.util.Random; 
import javax.swing.JOptionPane; 

public class Homework9 { 

    public static void main(String[] args) { 

     //Create a method that creates a random winning lottery ticket 
     //Ask the user to input his 5 numbers for the winning lottery 
     //Make a mthode that campares the two arrays and return the numbers that match 
     //If all numbers match generate the messge "Grand Prize Winner!" 
     ArrayList userArray = new ArrayList(); 
     ArrayList randomArray = new ArrayList(); 
     ArrayList finalArray = new ArrayList(); 
     int userPick, counter = 0; 

     randomArray = lottryNumbers(); 

     for (int i = 1; i <= 5; i++) { 

      userPick = Integer.parseInt(JOptionPane.showInputDialog("Please choose a number between 0 and 9")); 

      while (userPick <= 0 || userPick >= 9) { 
       userPick = Integer.parseInt(JOptionPane.showInputDialog("Sorry, please choose a number between 0 and 9")); 
      } 

      userArray.add(userPick); 
     } 

     for (int i = 1; i <= 5; i++) { 
      if (userArray.get(i) == randomArray.get(i)) { 
       counter++; 
       finalArray.add(userArray.get(i)); 
      } 
     } 

     if (finalArray.size() == 5) { 
      System.out.println("Grand Prize Winner!"); 
     } 

     System.out.println("Sorry, /n you only got these " + counter 
       + " numbers correct: /n" + finalArray); 
    } 

    public static ArrayList lottryNumbers() { 
     ArrayList randomArray = new ArrayList(); 
     Random rand = new Random(); 

     for (int i = 1; i <= 5; i++) { 
      randomArray.add(rand.nextInt(10)); 
     } 

     return randomArray; 

    } 
} 
+1

要了解如何最好地利用這個網站,把旅遊和閱讀幫助中心。 –

+0

@EdonFreiner你必須使用ArrayList嗎?這似乎不適合這種情況。 – user3437460

+0

@EdonFreiner'array list sectors',你的意思是'array list elements?' – user3437460

回答

1

在java中

  1. Integer是一個對象而int是原始的。
  2. Collections(如ArrayList)只能容納Object S和沒有primitive數據

現在比較兩個對象的 所以當你說

值必須使用 equals(Object o)方法(注意: ==只比較refrences)
array.add(10); 

在這裏10將被轉換爲Object Integer然後被添加到數組中。

所以你的情況,以檢查平等,你應該有類似

userArray.get(i).equals(randomArray.get(i) 
+0

我明白了。非常感謝你,有沒有辦法將一個字符串解析爲一個int而不是一個整數? –

+0

@EdonFreiner在Integer類中有一個名爲parseInt的方法,它將'String'轉換爲'int' – nafas