我正在为学校做Java任务。分配是处理读取第一个文件的2个文件,使用第二个文件对第一个文件进行调整,最后输出到新文件中。
Scanner inputRecords = new Scanner(new File("Records.txt"));
Scanner inputTransactions = new Scanner(new File("Transactions.txt"));
BufferedWriter outputFile = (new BufferedWriter(new FileWriter("NewRecords.txt", true)));
char code; // transaction code
String lineTran = "";
String lineRecord = "";
String midS = "";
String tidS = "";
int tid = 0, mid= 0;
for (int x = 0; x < 6; x++)
{
lineTran = inputTransactions.nextLine();
code = lineTran.charAt(0);
System.out.println(code);
tidS = lineTran.substring(2,11);
tid = Integer.parseInt(tidS);
lineRecord = inputRecords.nextLine();
midS = lineRecord.substring(0,9);
mid = Integer.parseInt(midS);
if (mid < tid) // add a new record lineTran.substring(2,lineTran.length()
{
outputFile.write(lineRecord);
outputFile.newLine();
lineRecord = inputRecords.nextLine();
}
else if (mid == tid )
{
if (code == 'C') //change record
{
outputFile.write(lineTran.substring(2,lineTran.length()));
outputFile.newLine();
lineTran = inputTransactions.nextLine();
}
else if (code == 'D') //delete record
{
lineTran = inputTransactions.nextLine();
lineRecord = inputRecords.nextLine();
}
else // add error
{
System.out.println(lineRecord + " Already Exists...add error");
lineTran = inputTransactions.nextLine();
}
}
else
{
if (code == 'A') // add record
{
outputFile.write(lineTran.substring(2,lineTran.length()));
outputFile.newLine();
lineTran = inputTransactions.nextLine();
}
else if (code == 'C') // change error
{
System.out.println(lineRecord + " Record already exist...Change Error");
lineTran = inputTransactions.nextLine();
}
else // delete error
{
System.out.println(lineRecord + " Record does not exist...delete error");
lineTran = inputTransactions.nextLine();
}
}
请注意: Records.txt有10行信息(例如:######### lastname firstname职业) Transactions.txt有6行信息(例如:&#39; A,D或C&#39; ######### lastname firstname职业)
我遇到的问题是无论循环的类型如何,我都会遇到2个延迟中的一个。 1)在上面的for循环的情况下
d 一个 C 一个 C 386326383 Slim Kan personalTrainer未找到任何更改...更改错误
线程中的异常&#34; main&#34; java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 在java.lang.String.charAt(未知来源) 在fileHandling.main(fileHandling.java:26) 是结果,没有写入文件。
2)如果我通过x&lt; 5运行循环程序运行正常,但跳过最后一次交易。
我试过&#34;做什么&#34; &#34;而&#34;而&#34;循环,但只有类似的结果。有什么建议吗?
答案 0 :(得分:0)
在if
条件下,您已分配lineTran = inputTransactions.nextLine();
,然后在for
循环的顶部再次分配。意味着你每个循环都会忽略1行。因此,在事务文件中你有6行,那么你循环将运行比文件中的行数更多的循环,因为你已经读取.nextLine()
多于行数。