我只是在学习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语句,但那是微不足道的/无聊的,所以我试图这样做,我通常会用其他语言。
答案 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();