我正在尝试用反斜杠拆分字符串,但我遇到了问题。我确定我有正确的表达能否有人阅读我所做的并告诉我我的问题?
package taskstodo;
public class Task {
StringBuilder name;
StringBuilder note;
StringBuilder date;
void setName(String name) {
this.name = new StringBuilder(name);
}
void setNote(String note) {
this.note = new StringBuilder(note);
}
boolean dateIsValid() {
String dateStr = date.toString();
String[] numbers = (dateStr.split("[\\\\]"));
for(String num : numbers) {
System.out.println(num);
if ((num.length()) != 2) {
return false;
}
return true;
}
return true;
}
void setDate(String date) {
this.date = new StringBuilder(date);
}
}
package taskstodo;
public class TasksToDo {
public static void main(String[] args) {
Task myTask = new Task();
myTask.setDate("02/03/20");
System.out.println(myTask.dateIsValid());
Task myTask2 = new Task();
myTask2.setDate("23/45/6001");
System.out.println(myTask2.dateIsValid());
}
}
TasksToDo类测试Task类。
它应该返回:
02
03
20
true
23
45
6001
false
但它返回:
02/03/20
false
23/45/6001
false
答案 0 :(得分:5)
您说您希望通过反斜杠\
进行拆分,但是您正在将正斜杠/
传递给您的测试用例。你怎么能指望它起作用?!
试试这个
public static void main(String[] args) {
Task myTask = new Task();
myTask.setDate("02\\03\\20");
System.out.println(myTask.dateIsValid());
Task myTask2 = new Task();
myTask2.setDate("23\\45\\6001");
System.out.println(myTask2.dateIsValid());
}
答案 1 :(得分:1)
要检查您的日期,您可以让Jdk为您解析。
try
{
new SimpleDateFormat("dd/MM/yyyy").parse("21/16/2000");
return true;
}
catch ( ParseException exception )
{
return false;
}