我目前在我的数组中遇到了一个越界问题,而且我真的不确定我到底在哪里出错了。我真的很想再看看这件事情,因为我会失去理智。数组索引超出范围例外问题
我诚挚地感谢任何帮助。 不是:谢谢。
package com.jpmorgan.spring.csv;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class CSVRead {
static void read() throws IOException {
String csvFileToRead = "profit.csv";
BufferedReader br = null;
String line = "";
String splitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFileToRead));
while ((line = br.readLine()) != null) {
String[] array = line.split(splitBy);
System.out.println("Equity & Bonds: [Instrument Type= " + array[0] + " , Name=" + array[1] + " , Quantity=" + array[2]
+ " , Buy=" + array[3] + " , Sell=" + array[4] + /*" , Coupon=" + array[5] +*/ "]");
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done reading CSV file");
}
}
这是完整的CSV文件。 我试过使用调试,但它没有太大的帮助。
instrument_type,name,quantity,buy_price,sell_price,coupon
Equity,AAA,123,1.01,1.10
Equity,BBBB,3,1.05,1.01
Bond,CCC,3,,,0.13
Equity,AAA,12,1.11,1.13
Bond,DD,3,,,1.24
主要参考。
/**
* Main class is menu driven, receives CSV input.
* This program reads, calculates and writes CSV files.
* @author David McNeill
* @version 1.0 - 17/03/1015
*/
package com.jpmorgan.spring.csv;
import java.util.Scanner;
public class CSVMain{
public static void main(String[] arg) throws Exception {
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
int userChoice;
boolean quit = false;
do {
System.out.println("Please choose an option using 1 - 4"); //print text to screen
System.out.println("------------------------------------"); //print text to screen
System.out.println("1: Read 'input' CSV file"); //print text to screen
System.out.println("2: Calculate 'input' CSV file"); //print text to screen
System.out.println("3: Write calculation result to CSV file"); //print text to screen
System.out.println("4: Exit program"); //print text to screen
userChoice = in.nextInt(); //'in' equals integer
if (userChoice == 4) //when '3' is input then...
quit = true; //the program will now quit
else if (userChoice == 1) //when '1' is input then...
CSVRead.read();
else if (userChoice == 2);
//####################calculations go here#########################
//####################calculations go here#########################
//####################calculations go here#########################
else if (userChoice == 3)
CSVWrite.write();
} while (!quit);
}
}
u能更新与CSV的前几排的问题做
CSVRead.main();
? – 2015-03-18 21:15:05你的代码假设'line.split(splitBy)'将返回一个至少有5个条目的数组(6个带有注释掉的位)。显然它不是。所以你必须看看这条线并找出原因。调试器是最好的方法,单步执行代码。 – 2015-03-18 21:15:18
是的,从'split'方法调试它。此外,如果文件有一些不同的标题,则会导致问题。这就是为什么我问前2-3排。 – 2015-03-18 21:16:46