Switch语句无法正常运行

时间:2013-08-08 06:32:40

标签: java escaping switch-statement

我正在努力让这个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;              
}

1 个答案:

答案 0 :(得分:1)

问题是您使用String.contains的正则表达式。

根据method documentation,您需要提供CharSequenceString.contains,即。你必须写if (input.contains("."))而不是if (input.contains("\\."))