Java arraylist。我需要将随机数传递给数组列表并将它们传递给另一个类,以便根据另一组数字检查这些数字

时间:2013-08-09 14:37:18

标签: java arrays arraylist

我很困惑将ARRAYLIST值从一个类传递到另一个类。 我之前在这些课程中使用了ARRAY。我用ARRAYLISTS改变了那些。

我有2节课。这个类有一个名为“locationcells”的ARRAYLIST。该程序从另一个类获得3个随机数字并获得使用输入并检查它们的输入是否与3个数字匹配。它更像是一个猜谜游戏。

import java.util.ArrayList;

class SimpleDotCom {

    private ArrayList<String> locationcells;

    public void setLocationcells(ArrayList<String> Locs)
    {
        locationcells = Locs;       
    }

    public String CheckYourself(String StringGuess)
    {

            String result = " Miss";
            int index = locationcells.indexOf(StringGuess);

            if (index >= 0)
            {
                    locationcells.remove(index);

                    if (locationcells.isEmpty())
                    {
                        result = "Kill";
                    }
                    else
                    {
                        result = "Hit";
                    }

            }

        return result;      

    }
}

这看起来是正确的。 现在使用main方法的类:

import java.util.ArrayList;

class SimpleDotComGame {

    public static void main(String[] args)
    {
        int numOfGuesses = 0;
        GameHelper helper = new GameHelper();

        SimpleDotCom theDotCom = new SimpleDotCom();

        /*
        this is the part I don't understand. I used to have the int array and generated random numbers and it worked well.


        int randomNum = (int) (Math.random() * 5);

        ArrayList<String> locations = new ArrayList<String>();

        */

        theDotCom.setLocationcells(locations);

        boolean isAlive = true;

        while (isAlive == true)
        {
            String guess = helper.getUserInput("Enter a number");
            String result = theDotCom.CheckYourself(guess);
            numOfGuesses++;

            if (result.equals("Kill"))
            {
                isAlive = false;
                System.out.println("You took " + numOfGuesses + "guesses");
            }   
        }
    }
}

如果您看到上面的评论部分。这是我感到困惑的部分。我曾经在那里有一个阵列。 INT数组。所以我能够将INT随机数传递给“simpledotcom”类。现在它是一个字符串类型的arraylist,我不知道如何前进。

提前谢谢大家,

3 个答案:

答案 0 :(得分:1)

在插入数组列表之前,您始终可以使用int将随机Integer.toString()转换为字符串。

您可以使用String

int转换回Integer.parseInt()

E.g。

for (int i = 0 ; i < 3 ; i++)
{
    locations.add(Integer.toString((int)(Math.random() * 5));
}

答案 1 :(得分:1)

int numericGuess = Integer.parseInt(helper.getUserInput("Enter a number"));

您也可以使用整数列表:

ArrayList<Integer> locations = new ArrayList<Integer>();
while(//condition){
 int randomNum = (int) (Math.random() * 5);
 locations.add(randomNum)
}
这样你可以执行任务 locations.indexOf(numericGuess)locations.contains(numericGuess)

相反,你可以这样做,

String guess = helper.getUserInput("Enter a number");

ArrayList<String> locations = new ArrayList<String>();
while(//condition){
 int randomNum = (int) (Math.random() * 5);
 locations.add(String.valueOf(randomNum))
}

并检查 locations.indexOf(guess)locations.contains(guess)

答案 2 :(得分:1)

如果我理解的话:将3个字符串添加到ArrayList:

ArrayList<String> locations = new ArrayList<String>();
for (i=0; i<3; i++)
    { locations.add(String.valueOf((int) (Math.random() * 5))); }

无论如何,你可以稍微重构一下,从主方法中提取上面的行开始。

另一种方法可能是将整数存储在列表中,并将猜测转换为整数。无论如何,我看起来更合乎逻辑。在这种情况下,您将拥有一个ArrayList。要将字符串转换为整数:

int guessNumber = Integer.parseInt(guess); 

Integer guessNumber = Integer.valueOf(guess);

如果'guess'不包含可解析的整数,则两者都会抛出NumberFormatException(参见javadoc

为什么你没有使用像你之前做过的那样的数组?顺便说一下?