正确的存储值以检查输入的方法

时间:2013-10-05 04:45:34

标签: java

我只是在学习Java,并且对我在书中遇到的样本问题感到有些困惑。程序要求我接受2个字符串,一个字母用于颜色,第二个用于数字。

我的值是r =红色,b =蓝色,y =黄色,o =橙色,g =绿色表示第一个字符,第二个是1 =第一个,2 =第二个,3 =第三个,4 =第五个,第5个=第五。

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

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

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

编辑:注意,这本书要我使用if / else语句,但那是微不足道的/无聊的,所以我试图这样做,我通常会用其他语言。

2 个答案:

答案 0 :(得分:1)

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

您应该为颜色和位置创建不同的hashmap。 您可以按键从hashmap中获取值。

例如:

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


}

输出将是:红色

希望这适用于你的情况。

答案 1 :(得分:0)

您可以考虑使用Hashmap。假设我遇到了问题,这就是我的想法。

首先,输入输入,说r1。从中提取第一个字符,这将是您的颜色代码。保留一个HashMap,将所有颜色代码映射到其全名。因此,在这种情况下,r应该为您提供red

然后,创建另一个HashMap以跟踪颜色的位置。您刚刚从第一个red检索了HashMap。您可以将此作为第二个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();