我必須製作一個程序來讀取文本文件,並檢查每條線上的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看起來像一個謎 - 也許你不需要使用它,或者如果你發現不屬於其他代碼的錯誤,你也可以使用它。 –