-3

我对将 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”类。现在它是一个字符串类型的数组列表,我不知道如何前进。

谢谢大家,

4

3 回答 3

1

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

您可以将String背面转换为int使用Integer.parseInt()

例如

for (int i = 0 ; i < 3 ; i++)
{
    locations.add(Integer.toString((int)(Math.random() * 5));
}
于 2013-08-09T14:39:24.787 回答
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)

于 2013-08-09T14:44:56.757 回答
1

如果我理解得很好:向 ArrayList 添加 3 个字符串:

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

无论如何,您也可以稍微重构一下,从从 main 方法中提取上述行开始。

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

int guessNumber = Integer.parseInt(guess); 

或者

Integer guessNumber = Integer.valueOf(guess);

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

顺便说一句,你为什么不使用(显然)你以前做过的数组?

于 2013-08-09T14:58:18.240 回答