java中的文件类和数组
我在编写Java程序时被卡住了。我必须计算121名学生的成绩,并将其存储在一个数组中以供以后使用。但是我创建的数组没有for循环中的值java中的文件类和数组,java,arrays,java.util.scanner,java-io,Java,Arrays,Java.util.scanner,Java Io,我在编写Java程序时被卡住了。我必须计算121名学生的成绩,并将其存储在一个数组中以供以后使用。但是我创建的数组没有for循环中的值 public class GradeCalculator{ public static void main(String[] args){ File grade = fileName(); int lines = getNumEntries(grade); print(grade, lines);
public class GradeCalculator{
public static void main(String[] args){
File grade = fileName();
int lines = getNumEntries(grade);
print(grade, lines);
}
public static File fileName(){
Scanner scan = new Scanner(System.in);
System.out.println("Enter the name of the grade file");
String fileName = scan.nextLine();
File file = new File(fileName);
while(!file.exists()){
System.out.println("your input file does not exist");
fileName = scan.nextLine();
file = new File(fileName);
}return file;
}
public static int getNumEntries(File fln){
File file = fln;
int count = 0;
try{
Scanner input = new Scanner (fln);
while(input.hasNextLine()){
count++;
input.nextLine();
}
}catch(FileNotFoundException e) {
System.out.println("File not found");
System.exit(0);
}return count;
}
public static void print(File fln, int values)throws NoSuchElementException{
File file = fln;
int []a = new int [values];
try{
Scanner input = new Scanner(file);
for(int i=0; i<=a.length; i++){
while(input.hasNextDouble()){
double Lab = input.nextDouble();
double A1 = input.nextDouble()/10*4;
double A2 = input.nextDouble()/10*4;
double A3 = input.nextDouble()/10*4;
double A4 = input.nextDouble()/10*4;
double A5 = input.nextDouble()/10*4;
double A6 = input.nextDouble()/10*4;
double A7 = input.nextDouble()/10*4;
double Midterm1 = input.nextDouble()/20*15;
double Midterm2 = input.nextDouble()/35*15;
double Final = input.nextDouble()/110*37;
a[i]= (int)(Lab+A1+A2+A3+A4+A5+A6+A7+Midterm1+Midterm2+Final);
System.out.println(a[i]); //If I put the println here the values are correct
}
}
}catch(FileNotFoundException e){
System.out.println("File not found");
}System.out.println(a[i]); //If I put the println here the values are different
}
}
公共类等级计算器{
公共静态void main(字符串[]args){
文件等级=文件名();
int lines=getNumEntries(等级);
打印(级别、行);
}
公共静态文件名(){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入成绩文件的名称”);
字符串文件名=scan.nextLine();
文件=新文件(文件名);
而(!file.exists()){
System.out.println(“您的输入文件不存在”);
fileName=scan.nextLine();
文件=新文件(文件名);
}返回文件;
}
公共静态int getnumeries(文件fln){
File=fln;
整数计数=0;
试一试{
扫描仪输入=新扫描仪(fln);
while(input.hasNextLine()){
计数++;
input.nextLine();
}
}catch(filenotfounde异常){
System.out.println(“未找到文件”);
系统出口(0);
}返回计数;
}
公共静态无效打印(文件fln,int值)引发NoTouchElementException{
File=fln;
int[]a=新的int[值];
试一试{
扫描仪输入=新扫描仪(文件);
for(int i=0;i在外部for循环的第一次迭代中,您消耗了内部while循环中的所有输入。此外,您反复将a[0]
设置为等级,而不是数组中可能的每个索引。然后,for循环完成,您有一个如下数组:
{lastGrade, 0, 0, 0, ..., 0}
基本上,您需要去掉while循环。可能还有其他问题。如果我去掉while循环,它在java.util.Scanner.throwFor(未知源)在java.util.Scanner.nextDouble(未知源)在java.util.Scanner.nextDouble(未知源)在java.util.Scanner.nextDouble显示“线程中的异常”main“java.util.NoSuchElementException”在GradeCalculator.print(GradeCalculator.java:47)在GradeCalculator.main(GradeCalculator.java:10)“我必须重复这个过程121次,我想知道如果我想将值存储在数组中,我应该添加什么