-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;      

    }
}

これは正しく見えます。メインメソッドを持つクラス:

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

私がよく理解している場合: 3 つの文字列を ArrayList に追加します。

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

とにかく、上記の行を main メソッドから抽出することから始めて、少しリファクタリングすることもできます。

もう 1 つの方法は、整数をリストに格納し、推測を整数に変換することです。とにかく私にはもっと論理的に見えます。その場合、ArrayList があります。文字列を整数に変換するには:

int guessNumber = Integer.parseInt(guess); 

また

Integer guessNumber = Integer.valueOf(guess);

「推測」に解析可能な整数が含まれていない場合、どちらも NumberFormatException をスローします ( javadocを参照) 。

ところで、どうして (どうやら) 以前のように配列を使用しないのですか?

于 2013-08-09T14:58:18.240 に答える
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 に答える