我正在编写一个需要读取 csv 文件的程序。并打印出每行的第一个单词,以及紧随其后的第一个数字。奇怪的是,我的代码可以在朋友的计算机上运行,但不能在我自己的计算机上运行。
将一些方法和变量的命名法编辑为英语(这样你们更容易阅读)产生了更多特殊的错误,Netbeans 无法帮助我找到这些错误。一个简短的例子说明它在工作时应该是什么样子:Binnenstad 17.460 Bloemekenswijk 8.848 Brugse Poort - Rooigem 17.652 ...
主类代码:
package autobezit;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Autobezit {
/**
* @param args the command line arguments
* @throws java.io.FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
Hood brugge = new Hood("brugge", 50000);
System.out.println(brugge.getInfo());
Autobezit situation = new Autobezit();
situation.initialise();
}
public void initialise() throws FileNotFoundException {
Scanner sc = new Scanner(new File("Gent_autobezit.csv"));
sc.useDelimiter(";");
for (int i=0; i<3; i++){
sc.nextLine();
}
while(sc.hasNext()){
String name= sc.next();
int number= sc.nextInt();
Hood hood = new Hood(name,number);
sc.nextLine();
System.out.print(hood.getInfo());
}
}
}
还有“Hoodclass-code”
package autobezit;
public class Hood {
private String name;
private int numberOfInhabitants;
public Hood(String name, int numberOfInhabitants){
this.name=name;
this.numberOfInhabitants=numberOfInhabitants;
}
public String getInfo(){
return name+" "+numberOfInhabitants;
}
}
需要读取的 csv 文件:
Gent in Cijfers;;;;;;;;;
Wijken;;;;;;;;;
;Totaal aantal inwoners (2010) [aantal];Aantal huishoudens zonder auto (2001) [huishoudens];Aantal huishoudens met 1 auto (2001) [huishoudens];Aantal huishoudens met 2 auto's (2001) [huishoudens];Aantal huishoudens met 3 of meer auto's (2001) [huishoudens];Percentage huishoudens zonder auto (2001) [huishoudens];Percentage huishoudens met 1 auto (2001) [huishoudens];Percentage huishoudens met 2 auto's (2001) [huishoudens];Percentage huishoudens met 3 of meer auto's (2001) [huishoudens]
Binnenstad;17.460;3.347;4.270;730;64;39,8;50,8;8,7;0,8
Bloemekenswijk;8.848;1.337;1.707;245;20;40,4;51,6;7,4;0,6
Brugse Poort - Rooigem;17.652;2.602;3.428;484;34;39,7;52,4;7,4;0,5
Dampoort;12.030;1.376;2.117;389;30;35,2;54,1;9,9;0,8
Drongen;12.946;520;2.571;1.514;170;10,9;53,8;31,7;3,6
Elisabethbegijnhof - Papegaai;7.086;1.217;1.669;342;24;37,4;51,3;10,5;0,7
Gentbrugge;7.407;596;1.681;598;65;20,3;57,2;20,3;2,2
Kanaaldorpen en -zone;2.438;353;782;247;27;25,1;55,5;17,5;1,9
Ledeberg;9.361;1.351;1.908;262;27;38,1;53,8;7,4;0,8
Macharius - Heirnis;6.695;973;1.253;233;16;39,3;50,6;9,4;0,6
Mariakerke;13.297;858;2.993;1.159;120;16,7;58,3;22,6;2,3
Moscou - Vogelhoek;4.993;508;1.198;294;27;25,1;59,1;14,5;1,3
Muide - Meulestede - Afrikalaan;6.010;806;1.095;133;18;39,3;53,4;6,5;0,9
Nieuw Gent - UZ;8.137;1.554;1.658;231;32;44,7;47,7;6,6;0,9
Oostakker;12.983;691;2.494;1.041;114;15,9;57,5;24;2,6
Oud Gentbrugge;8.431;914;1.900;378;38;28,3;58,8;11,7;1,2
Rabot - Blaisantvest;8.254;1.544;1.327;131;9;51,3;44,1;4,4;0,3
Sint Amandsberg;18.108;1.675;3.956;1.144;99;24,4;57,6;16,6;1,4
Sint Denijs Westrem;5.975;344;1.202;675;97;14,8;51,9;29,1;4,2
Sluizeken - Tolhuis - Ham;10.952;1.575;1.727;209;17;44,6;49;5,9;0,5
Stationsbuurt Noord;11.538;1.856;3.173;615;48;32,6;55,7;10,8;0,8
Stationsbuurt Zuid;7.745;875;1.918;494;56;26,2;57,4;14,8;1,7
Watersportbaan - Ekkergem;7.147;1.637;1.791;244;24;44,3;48,5;6,6;0,6
Wondelgem;14.126;989;3.474;966;68;18;63,2;17,6;1,2
Zwijnaarde;7.100;419;1.521;678;91;15,5;56,1;25;3,4
Totaal;246.719;29.917;52.813;13.436;1.335;30,7;54,2;13,8;1,4
;;;;;;;;;
;;;;;;;;;
;;;;;;;;;
;;;;;;;;;
编辑:添加导入命令:
import java.util.Locale;
// 和 sc.useLocale.... 在 sc.useDelimiter 之后
sc.useLocale(Locale.GERMAN);
解决了一些问题。问题的最大根源在于:
while(sc.hasNext())