我遇到一个问题,要求用户输入1-12的数字,然后程序返回相应的月份。例如,如果用户输入数字“2”,则将打印字符串“Feb”。
我知道如何实现这一目标,但我觉得有更好,更有效的解决方法。我想到的方法就是为每个数字(1-12)制作12个if语句,然后根据数字打印相应的月份。
答案 0 :(得分:3)
使用月份编号键入的Map
。该值将包含月份名称。
Map<Integer, String> monthNames = new HashMap<Integer, String>();
monthNames.put(1, "January");
monthNames.put(2, "February");
...
int month = 3;
System.out.println(monthNames.get(month)); // prints March
另请考虑使用DateFormatSymbols
获取月份名称。见How can I convert an Integer to localized month name in Java?
答案 1 :(得分:2)
使用hashtables。每个键都指向像你的月份一样的元素。也许你也可以构建自己的哈希函数。可能是O(1)访问时间而不是O(n)。
Hashtable numbers = new Hashtable();
numbers.put("one", new Integer(1)); //String<-->Integer
numbers.put("two", new Integer(2));
numbers.put("three", new Integer(3));
Integer n = (Integer)numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
You can change the key and element(in this example they are String and Integer) like this:
Hashtable<Integer, String> abc=new Hashtable<Integer, String>();
abc.put(new Integer(4), "hello");
Hashtables接受键和项的对象,因此您可以使用任何扩展Object的类。非常灵活。但是,使用对象可能会降低性能,因为你不是说“基准”之类的东西,这可能是你的朋友。
__________________________________________________________
| You can use Integer.valueOf() (available since Java 1.5) |
| instead of new Integer Credit to "Steve Kuo" |
答案 2 :(得分:2)
使用switch语句是一种方法。尽管使用不同的数据结构有更优雅的方式,但鉴于您处于入门课程中,理解数据结构将更加困难。
答案 3 :(得分:1)
你可以简单地使用一个数组来实现这个
arr = {"january", "february"
// etc
}
答案 4 :(得分:1)
你可以使用switch语句,因为你没有使用任何结构,否则我会推荐一个地图,虽然它最初会感觉像是一堆if语句。
int monthNumber;
String month;
switch(monthNumber){
case 1: month = "January";
break;
case 2: ...
}
答案 5 :(得分:1)
许多解决方案:
Map
将数字1,2,3映射到“Jan”,“Feb”,“Mar”等。0
开头:String[] months = new String[] {"0 is no month", "Jan", "Feb", "Mar", ... };
如果您只需要一次,那么开关/外壳将是最清洁的。
答案 6 :(得分:0)
使用类似Map map的地图。然后months.get(i)获取MonthName。
答案 7 :(得分:0)
您可以使用switch语句,也可以使用某些数据结构,例如地图,数组,列表等。
切换示例1:
public String getMonth(int month)
{
switch (month)
{
case 1: return "January";
case 2: return "February";
case 3: return "March";
case 4: return "April";
case 5: return "May";
case 6: return "June";
case 7: return "July";
case 8: return "August";
case 9: return "September";
case 10: return "October";
case 11: return "November";
case 12: return "December";
}
}
切换示例2:
public String getCondition(int month)
{
String message = "";
switch (month)
{
case 1: message = "January";
break;
case 2: message = "February";
break;
case 3: message = "March";
break;
case 4: message = "April";
break;
case 5: message = "May";
break;
case 6: message = "June";
break;
case 7: message = "July";
break;
case 8: message = "August";
break;
case 9: message = "September";
break;
case 10: message = "October";
break;
case 11: message = "November";
break;
case 12: message = "December";
break;
default: message = "Invalid month";
}
}
尝试这些例子。