0

私はこの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;              
}
4

1 に答える 1

1

問題は、 に正規表現を使用していることですString.contains

method documentationによると、 toCharSequenceを指定する必要がありますString.containsif (input.contains("."))の代わりに書く必要がありif (input.contains("\\."))ます。

于 2013-08-08T06:57:43.047 に答える