我有一個問題,詢問用戶從1-12的數字,然後程序返回相應的月份。例如,如果用戶輸入數字「2」,則會打印字符串「Feb」。如果沒有一系列if語句,是否有辦法實現這一點?
我知道如何做到這一點,但我覺得有一個更好,更有效的解決方法。我想這樣做的方式就是爲每個數字(1-12)製作12個if語句,然後根據數字打印相應的月份。
我有一個問題,詢問用戶從1-12的數字,然後程序返回相應的月份。例如,如果用戶輸入數字「2」,則會打印字符串「Feb」。如果沒有一系列if語句,是否有辦法實現這一點?
我知道如何做到這一點,但我覺得有一個更好,更有效的解決方法。我想這樣做的方式就是爲每個數字(1-12)製作12個if語句,然後根據數字打印相應的月份。
使用由月份編號鍵入的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?
使用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");
Hashtable中接受key和項目,以便您可以使用擴展對象的任何類對象。非常靈活。但是,玩對象可能會降低性能,因爲你不是在說什麼像「基準」,這可能是你的朋友。
__________________________________________________________
| You can use Integer.valueOf() (available since Java 1.5) |
| instead of new Integer Credit to "Steve Kuo" |
使用switch聲明是一種方法。儘管使用不同的數據結構有更多優雅的方法,但考慮到你在入門課程中,理解數據結構將會變得更加困難。
你可以簡單地使用數組來實現這一
arr = {"january", "february"
// etc
}
使用像那樣的地圖地圖個月。然後months.get(i)得到MonthName。
由於您沒有使用任何結構,因此您可以使用switch語句,否則我會推薦一張地圖,儘管它起初很像是一堆if語句。
int monthNumber;
String month;
switch(monthNumber){
case 1: month = "January";
break;
case 2: ...
}
許多解決方案:
Map
映射的數字1,2,3爲 「月」, 「月」, 「月」,等等0
:String[] months = new String[] {"0 is no month", "Jan", "Feb", "Mar", ... };
如果你只需要這一次,開關/情況下恕我直言將是最乾淨的。
你可以使用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'語句。 –
如果你正在上課,你應該把它標記爲家庭作業。話雖如此,他們可能要麼試圖讓你自己學習案例陳述,要麼迫使你使用一個大的if-else鏈,這樣當你學習病例陳述時,你可以真正感激他們做了什麼以及他們是怎麼做的用過的。 –