好的,我将首先展示我的代码,然后我将解释我需要帮助的内容。
Random isServerChance = new Random();
Random isGood = new Random();
Random isBad = new Random();
// Some IDs which are considered "Good"
int isGoodTable[] =
{ 1038, 1040, 1042, 1044 };
// Some IDs which are considered "Bad"
int isBadTable[] =
{ 6570, 6585, 952, 969 };
// Based on this roll, will pick which cat is used. Good, or Bad.
int isServerRoll = isServerChance.nextInt(6);
// If it's > 3 it's going to be a "Good" item, if it's not, it's a bad
// item.
if (isServerRoll > 3)
{
int isGoodValue = isGood.nextInt(isGoodTable.length);
System.out.println("You've received a rare item! You got a: " + isGoodTable[isGoodValue]);
} else
{
int isBadValue = isBad.nextInt(isBadTable.length);
System.out.println("You've received a normal item. You've got a: " + isBadTable[isBadValue]);
}
}
好的,所以这将打印:您收到了正常的项目。你有一个:969 ||你收到了一件稀有物品!你有一个:1042。
假设969的int值是一个Spade。我是否有可能使969等于一个字符串数组 从上面的一个int表?
所以,如果我登陆969,它会说:“你收到了正常的物品。你有一个:锹!”
我有点新,所以我不确定这是否可行,但我不想为每个ID加载if语句。
由于
答案 0 :(得分:6)
答案 1 :(得分:2)
是。使用Map<Integer, String>
。你可以像这样把你的物品放进去
Map<Integer, String> itemMap = new HashMap<Integer, String>();
itemMap.put(969, "Spade");
// etc.
然后你可以像这样检索你的值
String itemName = itemMap.get(969); // spade
如果你这样做,请注意,因为HashMap
没有任何默认值,所以如果您尝试使用的密钥不在Map
中,那么您将获得{ {1}}回来。
答案 2 :(得分:2)
您可以使用enum
来解决此问题。例如,你可以做
public enum CardSuit {
SPADE(969, "Spades"),
HEART(952, "Hearts"),
DIAMOND(6585, "Diamonds"),
CLUB(6570, "Clubs");
private final int value;
private final String name;
private CardSuit(int value, String name){
this.value = value;
this.name = name;
}
public int getValue(){
return value;
}
public String toString(){
return name;
}
}
现在,您可以使用
创建一个CardSuit
数组
CardSuit[] suits = CardSuit.class.getEnumConstants();
您可以通过调用CardSuit.SPADE.getValue()将黑桃映射到969。使用Map<Integer, CardSuit>
在另一个方向进行查找。
有关全面的教程,请参阅The Java Tutorials on Enums。
答案 3 :(得分:0)
假设您需要ID和字符串(而不是String表,只使用索引作为ID),看起来您需要某种HashMap。
import java.util.HashMap;
HashMap<Integer, String[]> IDs = new HashMap<>();
IDs.put(969, new String[]{"Spade", "Shovel"} ); // Setting up your HashMap
// Recalling later
int randomID = 969;
String[] items = IDs.get(randomID); // items will be "Spade", "Shovel", will be null if the ID is not in the HashMap.
HashMap文档:http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
答案 4 :(得分:0)
你有基本的想法。我们不生成随机字符串,只生成随机数字。声明多个Random对象没有意义。使用一个Random生成器创建所需的所有数字。
作为初学者,我不建议使用map来创建数组中的数字(项目#)之间的对应关系。您可以将通信放入文本文件中。如果你有很多物品,这就是你要走的路。搜索文本文件是一个很好的练习。