Java 为什么我的缓冲读取器跳过行

Java 为什么我的缓冲读取器跳过行,java,bufferedreader,Java,Bufferedreader,我正在为我的编程课做一个项目,我在BufferedReader上遇到了问题。这是代码。它将运行良好,但它只是读取我的csv文件中每隔一行。我认为问题在于我在其中有两次infle=input.readLine,但如果我删除其中一个,就会出现运行时错误 import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.*; import java.

我正在为我的编程课做一个项目,我在BufferedReader上遇到了问题。这是代码。它将运行良好,但它只是读取我的csv文件中每隔一行。我认为问题在于我在其中有两次infle=input.readLine,但如果我删除其中一个,就会出现运行时错误

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.io.BufferedReader;




public class CrimeData {
    public static void main(String[] args) throws FileNotFoundException {
    BufferedReader input = new BufferedReader(new FileReader("crime.csv"));
    String inFile;
try {
    inFile = input.readLine();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

   int n = 0;
   int year[] = new int[50], population[] = new int[50], violentCrime[] = new int[50];
   double violentCrimeRate[] = new double[50];
   int murderAndNonnegligentManslaughter[] = new int[50];
   double murderAndNonnegligentManslaughterRate[] = new double[50];
   int rape[] = new int[50];
   double rapeRate[] = new double[50];
   int robbery[] = new int[50];
   double robberyRate[] = new double[50];
   int aggravatedAssault[] = new int[50];
   double aggravatedAssaultRate[] = new double[50];
   int propertyCrime[] = new int[50];
   double propertyCrimeRate[] = new double[50];
   int burglary[] = new int[50];
   double burglaryRate[] = new double[50];
   int larcenyTheft[] = new int[50];
   double larcenyTheftRate[] = new double[50];
   int motorVehicleTheft[] = new int[50];
   double motorVehicleTheftRate[] = new double[50];

   try {
    while ((inFile = input.readLine()) != null) {

           String words[] = input.readLine().split(",");
           year[n] = Integer.parseInt(words[0]);
           population[n] = Integer.parseInt(words[1]);
           violentCrime[n] = Integer.parseInt(words[2]);
           violentCrimeRate[n] = Double.parseDouble(words[3]);
           murderAndNonnegligentManslaughter[n] = Integer.parseInt(words[4]);
           murderAndNonnegligentManslaughterRate[n] = Double.parseDouble(words[5]);
           rape[n] = Integer.parseInt(words[6]);
           rapeRate[n] = Double.parseDouble(words[7]);
           robbery[n] = Integer.parseInt(words[8]);
           robberyRate[n] = Double.parseDouble(words[9]);
           aggravatedAssault[n] = Integer.parseInt(words[10]);
           aggravatedAssaultRate[n] = Double.parseDouble(words[11]);
           propertyCrime[n] = Integer.parseInt(words[12]);
           propertyCrimeRate[n] = Double.parseDouble(words[13]);
           burglary[n] = Integer.parseInt(words[14]);
           burglaryRate[n] = Double.parseDouble(words[15]);
           larcenyTheft[n] = Integer.parseInt(words[16]);
           larcenyTheftRate[n] = Double.parseDouble(words[17]);
           motorVehicleTheft[n] = Integer.parseInt(words[18]);
           motorVehicleTheftRate[n] = Double.parseDouble(words[19]);
           n++;
       }
} catch (NumberFormatException | IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


   Scanner scan = new Scanner(System.in);
   while (true) {
       System.out.println("********** Welcome to the US Crime Statistical Application **************************");
       System.out.println("Enter the number of the question you want answered. ");
       System.out.println("1. What were the percentages in population growth for each consecutive year from 1994 – 2013?");
       System.out.println("2. What year was the Murder rate the highest?");
       System.out.println("3. What year was the Murder rate the lowest?");
       System.out.println("4. What year was the Robbery rate the highest?");
       System.out.println("5. What year was the Robbery rate the lowest?");
       System.out.println("6. What was the total percentage change in Motor Vehicle Theft between 1998 and 2012?");
       System.out.println("7. What was [enter your first unique statistic here]?");
       System.out.println("8. What was [enter your second unique statistic here]?");
       System.out.println("9. Quit the program");
       System.out.println("Enter your selection: ");
       int choice = scan.nextInt();
       double low, high, percent;
       int y;
       switch (choice) {
       case 1:
           for (int i = 1; i < n; i++) {
               percent = ((population[i] - population[i - 1]) / population[i - 1]) * 100;
               System.out.println(
                       "Percentage of population growth during " + year[i - 1] + "-" + year[i] + " :" + percent);
           }
           break;
       case 2:
           high = murderAndNonnegligentManslaughter[0];
           y = year[0];
           for (int i = 1; i < n; i++) {
               if (murderAndNonnegligentManslaughter[i] > high) {
                   high = murderAndNonnegligentManslaughter[i];
                   y = year[i];
               }
           }
           System.out.println("The year has the highest Murder rate : " + y);
           break;
       case 3:
           low = murderAndNonnegligentManslaughter[0];
           y = year[0];
           for (int i = 1; i < n; i++) {
               if (murderAndNonnegligentManslaughter[i] < low) {
                   low = murderAndNonnegligentManslaughter[i];
                   y = year[i];
               }
           }
           System.out.println("The year has the lowest Murder rate : " + y);
           break;
       case 4:
           high = robberyRate[0];
           y = year[0];
           for (int i = 1; i < n; i++) {
               if (robberyRate[i] > high) {
                   high = robberyRate[i];
                   y = year[i];
               }
           }
           System.out.println("The year has the highest Robbery rate : " + y);
           break;
       case 5:
           low = robberyRate[0];
           y = year[0];
           for (int i = 1; i < n; i++) {
               if (robberyRate[i] < low) {
                   low = robberyRate[i];
                   y = year[i];
               }
           }
           System.out.println("The year has the lowest Robbery rate : " + y);
           break;
       case 6:
           double rateChange = 0;
           rateChange = (motorVehicleTheft[19] - motorVehicleTheft[5]);
           System.out.println(motorVehicleTheft);


       case 7:
           break;
       case 8:
           break;
       case 9:
           System.out.println("Thank you for using the Crime Database");
           System.exit(0);

       }
   }
}
}
import java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.*;
导入java.io.BufferedReader;
公共级犯罪{
公共静态void main(字符串[]args)引发FileNotFoundException{
BufferedReader输入=新的BufferedReader(新文件阅读器(“crime.csv”);
字符串填充;
试一试{
infle=input.readLine();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
int n=0;
国际年[]=新国际[50],人口[]=新国际[50],暴力犯罪[]=新国际[50];
重瓣紫罗兰红[]=新的重瓣[50];
int谋杀和非过失杀人[]=新int[50];
双重谋杀和非过失杀人案[]=新的双重谋杀案[50];
整数[]=新整数[50];
双倍率[]=新双倍率[50];
整数抢劫[]=新整数[50];
双倍利率[]=新的双倍利率[50];
整数达索[]=新整数[50];
双联[50]=新双联[50];
int propertyCrime[]=新int[50];
double Property Crimerate[]=新的double[50];
内部盗窃[]=新内部盗窃[50];
双倍防盗装置[]=新的双倍防盗装置[50];
国际盗窃案有效期[]=新国际盗窃案[50];
双重盗窃案效率[]=新的双重盗窃案[50];
国际机动车辆重量[]=新国际[50];
双人机动车辆高度[]=新双人[50];
试一试{
而((infle=input.readLine())!=null){
字符串字[]=input.readLine().split(“,”);
年份[n]=整数.parseInt(字[0]);
总体[n]=整数.parseInt(字[1]);
violentCrime[n]=整数.parseInt(单词[2]);
violentCrimeRate[n]=Double.parseDouble(单词[3]);
谋杀和非过失杀人[n]=整数.parseInt(字[4]);
谋杀和非过失过失杀人案[n]=Double.parseDouble(字[5]);
rape[n]=Integer.parseInt(字[6]);
rapeRate[n]=Double.parseDouble(字[7]);
抢劫[n]=整数.parseInt(字[8]);
Robbyrate[n]=Double.parseDouble(单词[9]);
Dassault[n]=Integer.parseInt(字[10]);
dassaultate[n]=Double.parseDouble(单词[11]);
propertyCrime[n]=Integer.parseInt(字[12]);
propertyCrimeRate[n]=Double.parseDouble(字[13]);
盗窃[n]=整数.parseInt(字[14]);
防盗率[n]=Double.parseDouble(单词[15]);
盗窃罪eft[n]=整数.parseInt(单词[16]);
盗窃罪,盗窃罪【n】=Double.parseDouble(单词[17]);
机动车重量[n]=整数.parseInt(字[18]);
机动车辆高度[n]=Double.parseDouble(单词[19]);
n++;
}
}捕获(NumberFormatException | IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
扫描仪扫描=新扫描仪(System.in);
while(true){
System.out.println(“************欢迎使用美国犯罪统计应用程序**************************”);
System.out.println(“输入您想要回答的问题的编号”);
System.out.println(“1.1994-2013年连续一年的人口增长百分比是多少?”);
System.out.println(“2.谋杀率最高的年份是哪一年?”);
3.谋杀率最低的年份是哪一年;
System.out.println(“4.抢劫率最高的年份是哪一年?”);
System.out.println(“5.抢劫率最低的年份是哪一年?”);
System.out.println(“6.1998年至2012年间机动车盗窃的总百分比变化是多少?”);
System.out.println(“7.什么是[在这里输入您的第一个唯一统计]?”;
System.out.println(“8.什么是[在这里输入第二个唯一的统计数据]?”;
System.out.println(“9.退出程序”);
System.out.println(“输入您的选择:”);
int choice=scan.nextInt();
双低,双高,百分比;
int-y;
开关(选择){
案例1:
对于(int i=1;i偏高){
高=谋杀和非过失杀人[i];
y=年[i];
}
}
System.out.println(“本年度谋杀率最高:“+y”);
打破
案例3:
低=谋杀和非过失杀人[0];
y=年份[0];
对于(int i=1;i高){
高=高氯酸盐[i];
y=年[i];
}
}
System.out.println(“当年抢劫率最高:“+y”);
打破
案例5:
低=硝酸盐[0];
y=年份[0];
对于(int i=1;iwhile((infile = input.readLine()) != null){
input.readLine();