我有一些Java代码,我正在其中尝试检查文本文件中的数据是否存在并且格式正确,并显示给用户。
我具有的代码如下:
public static void main(String[] args)
{
int itemcount = 0;
String line;
String input;
int i = 0;
String[] title = new String[20];
String[] author = new String[20];
String[] publisher = new String[20];
float[] price = new float[20];
int[] pages = new int[20];
String[] ISBN = new String[20];
int x = 0;
while (i == 0)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the file name (with .txt):");
input = scan.nextLine();
File Fileobject = new File (input);
try {
Scanner FileReader = new Scanner (Fileobject);
//FileReader.useDelimiter(" - ");
// Read and display each line in the file
while(FileReader.hasNextLine())
{
line = FileReader.nextLine();
Scanner LineReader = new Scanner(line);
LineReader.useDelimiter(" - ");
//System.out.println(line);
title[x] = LineReader.next();//STORES ALL ITEMS IN ARRAY
author[x] = LineReader.next();
publisher[x] = LineReader.next();
price[x] = LineReader.nextFloat();
pages[x] = LineReader.nextInt();
ISBN[x] = LineReader.next();
//System.out.println(line);
System.out.println("-------------------------------------");
System.out.print(String.format("%-15s", "Title:"));
System.out.println(String.format("%-15s", title[x]));
System.out.print(String.format("%-15s", "Author:"));
System.out.println(String.format("%-15s", author[x]));
System.out.print(String.format("%-15s", "Publisher:"));
System.out.println(String.format("%-15s", publisher[x]));
System.out.print(String.format("%-15s", "Price:"));
System.out.println(String.format("%-15s", price[x]));
System.out.print(String.format("%-15s", "Pages:"));
System.out.println(String.format("%-15s", pages[x]));
System.out.print(String.format("%-15s", "ISBN:"));
System.out.println(String.format("%-15s", ISBN[x]));
//System.out.println("-------------------------------------");
i++;
x++;
}
FileReader.close();
}
catch(FileNotFoundException e)
{
System.out.println("File not found, please check and re-enter the name.");
}
}
}
}
从文本文件中获取数据,然后将其存储在数组中,然后从那里将其打印输出给用户。
我的典型输出是:
标题:OOP编程作者:格雷厄姆·温特发行人:O'Reilly价格:32.5网页:120ISBN:0471974555
标题:CCDA考试指南作者:安东尼·布鲁诺出版商:思科出版社价格:49.95网页:232书号:0735700745
标题:网络指南作者:塔玛拉·迪恩(Tamara Dean)发布者:课程技术价格:34.5网页:64ISBN:1439055661
标题:无线黑客作者:Rob Weeks发行人:O'Reilly价格:29.5网页:890ISBN:0596101442
标题:大型LAN作者:凯文·杜利发行人:O'Reilly价格:39.0网页:98ISBN:0596001509
标题:学习Java作者:威廉·莱恩发行人:Wiley价格:12.0网页:158ISBN:0072263445X
我想检查以下内容并将错误输出给用户:
检查书名是否缺失
检查作者是否失踪
检查发布者是否丢失
检查isbn是否丢失
检查分隔符是否丢失或错误
检查页面是否为数字
检查价格是否为数字
文本文件中的数据示例:
Learning Java - William Lane - Wiley - 12.00 - 158 - 0072263445X
- William Stalling - Prentice Hall - 25.00 - 120 - 1304086641
OOP programming - Graham Winter - 32.50 - O'Reilly - 0471974555
Windows XP Unwired - Wei Meng Lee - 24.95 - O'Reilly - 0596005369
顺序应为:标题-作者-出版商-价格-页面-ISBN。
任何帮助将不胜感激。
编辑:
我尝试将try,catch语句添加到将数据添加到数组以尝试捕获InputMismatchExeptions的每个部分。我的程序似乎采用了文件的字面值,并在数组后面添加了空格。
这也不起作用。我了解代码可能会采用文件数据的原义。谁能指出我正确的方向来开始添加验证?我不要求这样做对我来说只是需要一些指导。
我个人将使用String.isEmpty()来确定是否缺少书名或作者之类的东西。它返回一个布尔值,并检查字符串是否为空或null。
例如:
String line = LineReader.next();
if(!line.isEmpty()) {
title[x] = line;
}
更多信息和示例在这里找到:https://www.javatpoint.com/java-string-isempty
我知道的最简单的方法是将所有变量初始化为0
。对所有数组进行循环,并检查0
是否已更改,如果未返回false
,则对每个未更改的元素返回true
。
for(int i=0; i<20; i++){
if(title[i].equals(0))
System.out.println("Empty Title");
}
依此类推。