我很困惑将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,我不知道如何前进。
提前谢谢大家,
答案 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)
为什么你没有使用像你之前做过的那样的数组?顺便说一下?