Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 从.csv中排除标题_Java_Csv - Fatal编程技术网

Java 从.csv中排除标题

Java 从.csv中排除标题,java,csv,Java,Csv,我有一个.csv文件,它的头我想被跳过。当.csv文件中存在头文件时,我会出错,但当它被删除时,程序运行得非常好。我想让我的代码跳过标题,继续这个过程 .csv文件的外观: 使模型速度燃油基准MPG比例因子行驶时间 福特野马0.20 20 0.02 2.3 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; impo

我有一个.csv文件,它的头我想被跳过。当.csv文件中存在头文件时,我会出错,但当它被删除时,程序运行得非常好。我想让我的代码跳过标题,继续这个过程

.csv文件的外观:

使模型速度燃油基准MPG比例因子行驶时间

福特野马0.20 20 0.02 2.3

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

   public static void main(String[] args) throws IOException {
   List<Vehicle> cars = new ArrayList<Vehicle>();
   Scanner scanner = new Scanner(System.in);
   System.out.println("Enter the file name:");
   String filename = scanner.nextLine();
   BufferedReader reader = new BufferedReader(new FileReader(new File(
           filename.trim())));
   String line = "";


   while ((line = reader.readLine()) != null) {
       String[] words = line.split(",");


           String make = words[0];
           String model = words[1];
           int currentSpeed = Integer.parseInt(words[2]);
           double fuel = Double.parseDouble(words[3]);
           double baseMpg = Double.parseDouble(words[4]);
           double scaleFactor = Double.parseDouble(words[5]);
           double timeTravelled = Double.parseDouble(words[6]);

           Vehicle car = new Car(fuel, currentSpeed, baseMpg, scaleFactor,
                   make, model, timeTravelled);
           System.out.println(car);
           cars.add(car);


   }

   FileWriter writer=new FileWriter(new File("ProcessedCars.txt"));

   for(Vehicle car:cars)
   {
       writer.write(car.toString());
       writer.flush();
       writer.write("\r\n");

       }

   }

}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args)引发IOException{
List cars=new ArrayList();
扫描仪=新的扫描仪(System.in);
System.out.println(“输入文件名:”);
字符串文件名=scanner.nextLine();
BufferedReader reader=新BufferedReader(新文件读取器)(新文件读取器(
filename.trim());
字符串行=”;
而((line=reader.readLine())!=null){
String[]words=line.split(“,”);
字符串生成=单词[0];
字符串模型=单词[1];
int currentSpeed=Integer.parseInt(字[2]);
double fuel=double.parseDouble(单词[3]);
double baseMpg=double.parseDouble(字[4]);
double scaleFactor=double.parseDouble(字[5]);
double timetraveled=double.parseDouble(单词[6]);
车辆=新车(燃油、当前速度、基本英里数、比例系数、,
品牌、型号、时间);
系统输出打印(car);
cars.add(car);
}
FileWriter=newfilewriter(新文件(“ProcessedCars.txt”);
用于(汽车:汽车)
{
writer.write(car.toString());
writer.flush();
writer.write(“\r\n”);
}
}
}

一种方法是捕获异常:

    try{
        int currentSpeed = Integer.parseInt(words[2]);
        // ...
    }catch(NumberFormatException e){
        // Failed to parse speed, input is likely a text, like header
    }

或者,如果确定有标题,只需在循环之前调用额外的
readline()

跳过while循环中的第一行:

boolean skip = true;
while ((line = reader.readLine()) != null) {
  if(skip) {
    skip = false; // Skip only the first line
    continue;
  }
  String[] words = line.split(",");
  // ...
}

线程“main”java.lang.ArrayIndexOutOfBoundsException:1在Test.main(Test.java:27)第27行是什么?输入文件的一行的列可能比预期的少。在这种情况下,单词数组的长度小于7,然后
words[6]
导致ArrayIndexOutOfBoundsException。您应该使用
words.length
检查数组的实际长度。获取以下错误:线程“main”java.lang中的异常。NumberFormatException:对于输入字符串:“Speed”在java.lang.Integer.parseInt(Integer.java:580)在java.lang.Integer.parseInt(Integer.java:615)在Test.main(Test.java:28)在java.lang.Integer.parseInt(Integer.java:615)在Test.main(Test.java:28)在java.lang.ArrayIndexOutOfBoundsException(Integer.java:1)线程“main”中为什么会出现异常