我正在努力让这个switch
声明发挥作用。
我要求用户过生日,并将其设置为DD.MM.YYYY
格式。 if
语句确定它们是否使用“。”。将它或我的其他符号之一分开,例如“/”,“”。
其他符号工作正常,他们输入switch
语句,因此如果用户输入15/07/1993它将正常工作,月份将变为7月。
但当他们进入15.07.1993时,它会进入default case
而不是第7个案例。
我认为它与逃脱的“。”有关。
("\\.")
这可能会改变它的价值。它有什么办法吗? 输入是我的扫描仪。
任何问题随时可以提出。
if(input.contains("\\."))
{
String[] tokens = input.split("\\.");
day = Integer.parseInt(tokens[0]);
intMonth = Integer.parseInt(tokens[1]);
year = Integer.parseInt(tokens[2]);
}
switch(intMonth)
{
case 1: month = "January";
break;
case 2: month = "Febuary";
break;
case 3: month = "March";
break;
case 4: month = "April";
break;
case 5: month = "May";
break;
case 6: month = "June";
break;
case 7: month = "July";
break;
case 8: month = "August";
break;
case 9: month = "September";
break;
case 10: month = "October";
break;
case 11: month = "November";
break;
case 12: month = "December";
break;
default: month = "not valid";
break;
}
答案 0 :(得分:1)
问题是您使用String.contains
的正则表达式。
根据method documentation,您需要提供CharSequence
到String.contains
,即。你必须写if (input.contains("."))
而不是if (input.contains("\\."))
。