需要帮助测试令牌以防止错误

时间:2016-08-18 13:21:30

标签: java token stringtokenizer

我必须创建一个程序来读取文本文件并检查每行上的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();
}

}

1 个答案:

答案 0 :(得分:0)

您首先必须按字段对代码进行分组。根据格式的不同,您可能会使用简单的split()而不是标记器。

为了简单起见,我在课堂上为每个字段检查创建一个方法。 然后,在相应的方法中,您需要解析它(通过正则表达式)并生成错误代码(如果有的话)。该方法将返回错误代码或不返回任何内容(您必须定义 nothing 对您来说意味着什么)。

您可以调整代码的第二部分来打印错误代码。