Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入文件循环_Java_Loops_Input - Fatal编程技术网

Java 输入文件循环

Java 输入文件循环,java,loops,input,Java,Loops,Input,基本上我必须写一个相当简单的代码。但有些部分是搞不清楚的。我们刚刚学习了关于循环之类的材料。我们的任务是编写代码,从输出文件中获取学生信息。姓名、地址、账号及其信用。然后计算他们的账单,并将其打印到输出文件中。到目前为止,我相信我已经完成了大部分代码,但我相信我们需要在这个程序中使用循环,这让我感到困惑。因为它不只是从一个学生那里获取信息,它最多可以从3个学生那里获取信息。所以我不确定是否正确循环,到目前为止,我有一个while循环在使用,以保持阅读,直到文本结束。但我不知道它是否正常工作,因为

基本上我必须写一个相当简单的代码。但有些部分是搞不清楚的。我们刚刚学习了关于循环之类的材料。我们的任务是编写代码,从输出文件中获取学生信息。姓名、地址、账号及其信用。然后计算他们的账单,并将其打印到输出文件中。到目前为止,我相信我已经完成了大部分代码,但我相信我们需要在这个程序中使用循环,这让我感到困惑。因为它不只是从一个学生那里获取信息,它最多可以从3个学生那里获取信息。所以我不确定是否正确循环,到目前为止,我有一个while循环在使用,以保持阅读,直到文本结束。但我不知道它是否正常工作,因为有些奇怪的事情

当我试图输出信息时,它说3个变量没有初始化,我几乎可以肯定它是。不管怎样,这是我的代码。任何关于循环输入和输出的提示都将不胜感激

/* */

package程序4;
导入java.util.*;
导入java.io.*;
导入javax.swing.*;
公共课程4{
//为全日制和非全日制学生设定价格。
静态最终双学费/学分=276.00;
静态最终双倍费用/学分=15.00;
静态最终双重服务每项信用=7.09;
静态最终双全日制学费=3311.00;
静态最终双倍全职费用=184.00;
静态最终双全职服务=85.00;
公共静态void main(字符串[]args)引发FileNotFoundException
{
int i;
字符串firstName=null;
字符串lastName=null;
字符串accountNumber=null;
双积分=0;
字符串地址1;
字符串地址,地址2,地址3,地址4,地址5,地址6;
字符串文件名;
双倍学费=0;
双重费用=0;
双倍合计=0;
字符串格式费用;
字符串格式总计;
字符串格式;
//创建名为infle的扫描仪对象,并将其指定为文件input.dat
fileName=JOptionPane.showInputDialog(“请输入输入文件名”);
Scanner infle=新扫描仪(新文件读取器(文件名));
//创建与文件output.dat关联的名为outFile的PrintWriter对象
PrintWriter outFile=新的PrintWriter(“tutionandfees.dat”);
//用于循环输入直到文件结束。
while(infle.hasNext())
{firstName=infle.next();
lastName=infle.next();
地址=infle.next();
address2=infle.next();
address3=infle.next();
address4=infle.next();
address5=infle.next();
address6=infle.next();
accountNumber=infle.next();
creditsTaken=infle.nextDouble();
}  
//If Else语句确定该学生是兼职还是全日制学生,然后计算他们的账单。
如果(信用等级<12)
{学费=学费/学分*学分;
费用=(每笔信贷的费用+每笔信贷的服务)*creditsTaken;
总额=学费+手续费;
formatTotal=String.format(“%.2f”,总计);
formatFees=String.format(“%.2f”,费用);
FormatTursey=String.format(“%.2f”,学费);
}
其他的
{
学费=全日制学费;
费用=全职费用+全职服务;
总额=学费+手续费;
formatTotal=String.format(“%.2f”,总计);
formatFees=String.format(“%.2f”,费用);
FormatTursey=String.format(“%.2f”,学费);
}
//输出到文件的所有信息,需要修复。
outFile.println(“学费账单报告”);
outFile.printf(“CWID\t\t名称\t\t学分\t\t学费\t\t费用\t\t总计%n”);
System.out.printf(帐号、名字、姓氏、信用状态、格式学费、格式费用、格式总额);
infle.close();
outFile.close();
showMessageDialog(null,“程序保存在tutionandfees.dat中”);
} 
}

除非变量已初始化,否则无法使用该变量。您已经在while块中写入了初始化,并且有一个进入while块的条件。这意味着初始化可能永远不会发生(如果文件没有要读取的行)。Java会检查这些条件。为了删除这些错误,可以在声明行将它们初始化为默认值。对于所有整数,您已经将它们初始化为0,类似地,字符串也可以初始化为null或空字符串

每个局部变量(§14.4)和每个空白最终字段(§4.12.4,§8.3.1.2)在访问其值时必须有一个明确的赋值。

确定赋值背后的思想是,对局部变量或空白final字段的赋值必须发生在访问的每个可能的执行路径上。

这意味着变量必须有一个值,无论它遵循什么执行路径。在您的情况下,它应该有一个值,无论它是否进入while块;即使你很确定它会


此外,在读取每个文件后,您可能希望将值保存到某个位置,因为在第二次迭代中需要同样的变量来保存下一行的值。否则将覆盖这些值。

如果文件为空,
firstName
lastName
可能为空。给他们默认值


此外,变量应该以小写字母开头,
AccountNumber
应该是
AccountNumber

忽略它无论如何都不起作用的事实。您的变量问题有以下3个:

String firstName       ;
String lastName        ;
String AccountNumber   ;
这些不是我的
String firstName       ;
String lastName        ;
String AccountNumber   ;
while (inFile.hasNext(fileName)) {
    firstName     = inFile.next();
    lastName      = inFile.next();
    ...
    AccountNumber = inFile.next();
}
String firstName = null;