【问题标题】:comparing ArrayLists sectors through the get method [duplicate]通过get方法比较ArrayLists扇区[重复]
【发布时间】:2015-12-14 16:31:31
【问题描述】:

我不知道为什么我的代码不起作用,特别是它给我带来了 ArrayList.get(i) == ArrayList.get(i); 的问题在Java中,它应该返回并比较两个数字,这不正确吗?

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;

    }
}

【问题讨论】:

  • 要了解如何最好地使用本网站,请浏览并阅读帮助中心。
  • @EdonFreiner 必须使用 ArrayList 吗?它似乎不适合这种情况。
  • @EdonFreiner array list sectors,你是说array list elements?

标签: java arraylist methods get


【解决方案1】:

在java中

  1. Integer 是一个对象,而 int 是原始的。
  2. Collections(例如ArrayList)只能保存Objects,不能保存primitive数据

现在要比较两个对象的值,您必须使用equals(Object o) 方法(注意== 只比较引用) 所以当你说

array.add(10); 

这里 10 将被转换为 Object Integer 然后被添加到数组中。

所以在你的情况下检查平等你应该有类似的东西

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

【讨论】:

  • 我明白了。非常感谢,有没有办法将字符串解析为 int 而不是整数?
  • @EdonFreiner 在 Integer 类中有一个叫做 parseInt 的方法,它将String 转换为int
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多