我必须创建一个程序来读取文本文件并检查每行上的8个数据是否符合某些条件。我得到了正确读取文本文件的程序,并且我已经实现了一个tokenizer来将文本文件数据拆分为8个单独的标记。我需要找到一个很好的方法来测试令牌以防止可能的错误。有什么简单的方法吗?这是错误列表。
代码错误
发票代码太短
B发票代码没有正确的字符
C发票代码数字全为零
D名称字段少于两个单词
E名称字段有四个以上的单词
F名称字段没有逗号
G名称字段标题错误
H名称字段初始化错误
我的销售价格没有小数点
J销售价格超过一个小数点
K销售价格领先零
L类型有坏符号(包含大写字母或包含符号)
M订单日期不是六个字符
N订单日期不是所有数字
P订单日期不是法定日期
Q发货日期不是六个字符
T发货日期不是所有数字
U发货日期不是法定日期
V未分类错误
每个字段最多可能有一个错误。因此,每条记录最多可能有六个错误。应按照列出上述错误的顺序检查每个字段的错误.INVOICE CODE正好为6个字符
CUSTOMER NAME最多30个字符
销售价格最多8个字符
GENRE最多10个字符
ORDER DATE正好6个字符
SHIPPING DATE正好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();
}
}
答案 0 :(得分:0)
您首先必须按字段对代码进行分组。根据格式的不同,您可能会使用简单的split()
而不是标记器。
为了简单起见,我在课堂上为每个字段检查创建一个方法。 然后,在相应的方法中,您需要解析它(通过正则表达式)并生成错误代码(如果有的话)。该方法将返回错误代码或不返回任何内容(您必须定义 nothing 对您来说意味着什么)。
您可以调整代码的第二部分来打印错误代码。