3

我刚刚学习 Java,对我正在阅读的书中遇到的一个示例问题有点困惑。该程序要求我接受 2 个字符的字符串,一个用于颜色的字母,第二个用于数字。

对于第一个字符,我的值是 r=red、b=blue、y=yellow、o=orange、g=green,第二个是 1=first、2=second、3=third、4=fifth、5=fifth。

例如,如果用户输入“r3”,我会输出“Red come in third!”。我想 #1 检查以确保每个 char 都是有效的 char,然后 #2 将每个 char 匹配到一个键以获得该键的完整值。

我怎样才能在 Java 中做到这一点?我只想使用一个 mutli dim 数组,但是我不能将我的键设置为一个 char 值,并将元素设置为完整值。我似乎找不到让我这样做的数据类型。例如

array("r" => "red", "b" => "blue", "g" => "green)

编辑:请注意,这本书希望我使用 if/else 语句,但这是微不足道的/无聊的,所以我试图按照我通常在其他语言中的方式来执行此操作。

4

2 回答 2

1

您可以使用 HashMap (java.util.HashMap)。HashMap 在某种程度上类似于 C# 中的字典。

您应该为颜色和位置创建不同的哈希图。您可以通过键从哈希图中获取值。

例如:

 public static void main(String a[])

    HashMap<String, String> map1 = new HashMap<String, String>();
    map1.put("r", "red");
    map1.put("b", "blue");
    System.out.println(map1.get("r"));


}

输出将是:红色

希望这将适用于您的情况。

于 2013-10-05T05:02:00.370 回答
0

您可以考虑使用Hashmap. 假设我的问题是正确的,这就是我的想法。

首先,接受输入,比如说r1。从中提取第一个字符,这将是您的颜色代码。保留HashMap将所有颜色代码映射到其全名的 a。所以,在这种情况下,r应该给你red.

然后,创建另一个HashMap来跟踪颜色的位置。您刚刚red从 first中检索到HashMap。您可以将其用作 second 的键HashMap
输入第二个字符作为 的值red

现在,您可以正确检索这些值。
这是我制作的几张愚蠢的桌子:

|r | red   | // Table one, to map characters to full 
|g | green | // color names.
|b | blue  |


|red   | 1   | // Now that you have color names,
|green | 2   | // retrieve their positions (or insert, whatever).
|blue  | 3   |  

还有另一种选择,那就是创建一个自定义类来存储颜色和位置。因此,您可以只使用一个HashMap并完成任务。你HashMap会看起来像:

|r | {red,1}  |
|g | {green,2}|
|b | {blue,3} |  

所以,如果你得到一个r,就用它作为HashMap. 该键的值将是一个自定义对象,其中包含颜色的全名和您输入的位置。

这是伪代码:

HashMap<Character,MyObject> map = new HashMap<>();
String input = "r1";
char colorCode = input.charAt(0);
char colorPos = input.charAt(1);

if(colorCode == 'r'){
    MyObject my = new MyObject("Red",colorPos);
    map.put(colorCode,my);
}// mode conditionals

//add code tp retrieve using map.get();
于 2013-10-05T05:09:55.033 回答