Java 有没有一种不用一系列if语句就能实现这一点的方法?
我有一个问题,要求用户输入1-12之间的数字,然后程序返回相应的月份。例如,如果用户输入数字“2”,则会打印字符串“Feb”Java 有没有一种不用一系列if语句就能实现这一点的方法?,java,Java,我有一个问题,要求用户输入1-12之间的数字,然后程序返回相应的月份。例如,如果用户输入数字“2”,则会打印字符串“Feb” 我知道如何做到这一点,但我觉得有一种更好、更有效的解决方法。我当时考虑的方法是,为每个数字(1-12)制作12个if语句,然后根据数字打印相应的月份。使用由月份数字键入的地图。该值将包含月份名称 Map<Integer, String> monthNames = new HashMap<Integer, String>(); monthNames.
我知道如何做到这一点,但我觉得有一种更好、更有效的解决方法。我当时考虑的方法是,为每个数字(1-12)制作12个if语句,然后根据数字打印相应的月份。使用由月份数字键入的
地图。该值将包含月份名称
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
Map monthNames=newhashmap();
一月一日;
每月(2日,“2月”);
...
整月=3;
System.out.println(monthNames.get(month));//版画进行曲
还考虑使用<代码> DATEFATATORATIONS符号>代码>以获取月份名称。请参见使用。每个关键点都指向一个元素,比如你的月份。也许您也可以构建自己的哈希函数。可以是O(1)访问时间,而不是O(n)
使用语句是一种方法。虽然使用不同的数据结构有更优雅的方法,但由于您正在学习入门课程,因此理解数据结构将更加困难。您可以简单地使用数组来实现这一点
arr = {"january", "february"
// etc
}
使用这样的地图。然后是MonthName。get(i)来get MonthName。您可以使用switch语句,因为您没有使用任何结构,或者我建议使用map,尽管它一开始感觉非常像一堆if语句
int monthNumber;
String month;
switch(monthNumber){
case 1: month = "January";
break;
case 2: ...
}
许多解决方案:
- 使用
映射
将数字1、2、3映射到“一月”、“二月”、“三月”等
- 使用字符串数组,但请记住数组索引以
0
开头:String[]months=新字符串[]{“0不是月”、“一月”、“二月”、“三月”、“月”…}代码>
- 使用switch/case语句
如果只需要一次,那么switch/case将是最干净的。您可以使用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";
}
}
试试这些例子。这是家庭作业吗?查找case
语句。如果你在上课,你可能应该把它标记为家庭作业。也就是说,他们可能是想让你自己去学习case语句,或者强迫你使用一个大的if-else链,这样当你学习case语句时,你就可以真正了解它们的功能和使用方式。我想,你不是说“out”,而是说“put”,HashMap比HashTable快,不是吗?
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";
}
}
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";
}
}