Java 字符串数组不存储文本文件中的数据
所以我有一些代码应该使用jfilechooser获取文本文件使用带有冒号的拆分和扫描程序作为delimeter并将数据存储到数组中。代码和文本如下所示。我添加了一段代码来测试数组长度是否小于1,并且始终小于1,即使我将其设置为存储在字符串数组中。它为什么要这样做?我如何让它将每行代码中的文本存储到一个6个间隔的数组中Java 字符串数组不存储文本文件中的数据,java,arrays,split,java.util.scanner,Java,Arrays,Split,Java.util.scanner,所以我有一些代码应该使用jfilechooser获取文本文件使用带有冒号的拆分和扫描程序作为delimeter并将数据存储到数组中。代码和文本如下所示。我添加了一段代码来测试数组长度是否小于1,并且始终小于1,即使我将其设置为存储在字符串数组中。它为什么要这样做?我如何让它将每行代码中的文本存储到一个6个间隔的数组中 else if (e.getSource()==readButton) { JFileChooser fileChooser = new JFileChooser("Loc
else if (e.getSource()==readButton) {
JFileChooser fileChooser = new JFileChooser("Local Disk (C:)");
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
}
Scanner scan = new Scanner("empFile");
while(scan.hasNext()) {
String[] rowData = scan.nextLine().split(":");
if (rowData.length < 1){
System.out.println("error");
}
else if(rowData.length == 5) {
rowData[4] = "0";
fName = rowData[0];
lName = rowData[1];
position2 = rowData[2];
firstParam = Double.parseDouble(rowData[3]);
empNum = Integer.parseInt(rowData[4]);
c.addEmployee(fName, lName, position2, firstParam, 0, empNum);
}
else {
fName = rowData[0];
lName = rowData[1];
position2 = rowData[2];
firstParam = Double.parseDouble(rowData[3]);
secondParam = Integer.parseInt(rowData[4]);
empNum = Integer.parseInt(rowData[5]);
c.addEmployee(fName, lName, position2, firstParam, secondParam, empNum);
}
}
}
else if(例如getSource()==readButton){
JFileChooser fileChooser=newjfilechooser(“本地磁盘(C:)”);
if(fileChooser.showOpenDialog(null)=JFileChooser.APPROVE\u选项)
{
empFile=fileChooser.getSelectedFile();
}
扫描仪扫描=新扫描仪(“EMP文件”);
while(scan.hasNext()){
String[]rowData=scan.nextLine().split(“:”);
if(rowData.length<1){
System.out.println(“错误”);
}
else if(rowData.length==5){
行数据[4]=“0”;
fName=rowData[0];
lName=rowData[1];
位置2=行数据[2];
firstParam=Double.parseDouble(rowData[3]);
empNum=Integer.parseInt(rowData[4]);
c、 addEmployee(fName,lName,position2,firstParam,0,empNum);
}
否则{
fName=rowData[0];
lName=rowData[1];
位置2=行数据[2];
firstParam=Double.parseDouble(rowData[3]);
secondParam=Integer.parseInt(rowData[4]);
empNum=Integer.parseInt(rowData[5]);
c、 新增员工(fName、lName、职位2、firstParam、secondParam、empNum);
}
}
}
约翰:史密斯:制造业:6.75:120:444
贝蒂:怀特:经理:1200.00:111
斯坦:斯利米:销售额:10000.00:332
贝蒂:Boop:设计:12.50:50:244
扫描器接收的是字符串而不是变量。而不是
Scanner scan = new Scanner("empFile");
试一试
从
您当前正在扫描字符串“empFile”,而不是当前的实际文件。出现问题的原因是您试图在有任何选定文件之前使用扫描仪:
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
}
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
相反,您需要更改代码,以便仅在选择文件后创建扫描仪
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
}
你为什么要把EMP文件放在引文里?扫描仪扫描=新扫描仪(“EMP文件”);你是什么意思?我尝试将其更改为Scanner scan=new Scanner(empFile);但是我遇到了一个错误。您试图为作业5.txtok打开文本的文件名是什么。使empfile不带引用,并将所有其他内容放在同一if语句中(如果if语句失败,则不能使用扫描仪)。当我使用empfile而不是empfile时,我遇到了一个错误错误。错误显示“未处理的异常类型FileNotFoundException”我是否必须初始化文件empFile;?将您的代码放入try-catch块中,因为文件处理代码属于选中异常,您无法从try-catch或throwsI中逃脱我从未见过try/catch或throwsI,它会做什么?
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
}
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
}