我必须制作一个程序来读取文本文件,并检查每条线上的8条数据是否符合某些标准。我得到了正确读取文本文件的程序,并且我实现了一个标记器来将文本文件数据分成8个独立的标记。我需要找到一种测试令牌以防止可能的错误的好方法。任何简单的方法来做到这一点?这里是错误列表。需要帮助测试令牌以防止出现错误
CODE ERROR
甲发票代码太短
乙发票代码不具有正确的字符
Ç发票代码数位都是零
d名称字段具有比更少两个字
E名称字段有四个以上的字
F名称字段没有逗号
摹名称字段中有一个坏的标题
^h名称字段有一个不好的初始
我销售价格没有小数点
Ĵ销售价格有更多的不止一个小数点
ķ销售价格有一个前导零
大号体裁有坏小号ymbols(包含大写字母或包含符号)
M阶日期不是六个字符
n阶的日期是不是所有的数字
p th级的日期是不是一个合法的日期
Q运输日期不是六个字符
牛逼发货日期是不是所有的数字
ü发货日期是不是一个合法的日期
V未分类错误
每个字段最多可能有一个错误。因此,每条记录最多可能有6个错误。每个字段应当进行错误检查的顺序,上述误差listed.INVOICE CODE恰好6个字符
客户名称最多30个字符
销售价格最多8个字符
GENRE最多10个字符
订单日期恰好6个字符
出货日期恰好6个字符
这些字段用分号分隔。
发票代码应该是三个大写字母后跟三个数字,其中至少有一个数字不为零。
客户姓名的格式应该是姓氏后跟逗号,然后是可选的标题,名字和可选的中间首字母。标题必须是先生,夫人,博士,小姐或女士之一。中间首字母缩写必须是大写字母,后跟一个句点。这些词应该由一个空格分隔。
销售价格在小数点左边有两位十进制数字。价格应该没有领先的零。
该流派应该只包含小写字母。
这两个日期应该是MMDDYY格式,其中所有六个字符都是数字。
日期必须是法定日期。订单日期/装运日期可能不会在今天的日期之后。
这里是我的全码:
package Project3;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new FileReader("movie.dat"));
String line;
String token;
String delimiter = ";";
StringTokenizer tokenizer;
while((line = in.readLine()) != null){
tokenizer = new StringTokenizer(line, delimiter);
while (tokenizer.hasMoreTokens()){
token = tokenizer.nextToken();
System.out.print("Invoice Code: "+token+" ");
if(token.length() == 6){
}
else{
System.out.println("A");
}
if()
token = tokenizer.nextToken();
System.out.print("Customer Name: "+token+" ");
token = tokenizer.nextToken();
System.out.print("Sale Price: "+token+" ");
token = tokenizer.nextToken();
System.out.print("Genre: "+token+" ");
token = tokenizer.nextToken();
System.out.print("Order Date: "+token+" ");
token = tokenizer.nextToken();
System.out.print("Shipping Date: "+token+" ");
}
System.out.println();
}
in.close();
}
}
您应该学习如何使用RegEx。 – Blobonat
您可以发布样本记录吗? –
您需要更详细地了解(也许您已经知道,然后很好)字段和要求。例如,对于代码A,您需要知道哪个字段是发票代码以及最小长度是多少。特别是代码V看起来像一个谜 - 也许你不需要使用它,或者如果你发现不属于其他代码的错误,你也可以使用它。 –