尝试从逗号分隔的字符串作为输入循环arraylist时出错



我收到错误:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at Section5.TestMain.main(TestMain.java:51)

public class TestMain {
public static void main(String[] args) throws ParseException {

Scanner sc = new Scanner(System.in);
System.out.println("Enter the shipment details :");
String userDetail = sc.nextLine();
String userDetailParts[] = userDetail.split(",");
//System.out.println(Arrays.toString(userDetailParts));

Shipment shipment = new Shipment();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
shipment.setid(userDetailParts[0]); 
shipment.setsourcePort(userDetailParts[1]); 
shipment.setdestinationPort(userDetailParts[2]);
shipment.setexpectedDeliveryDate(sdf.parse(userDetailParts[3])); 
shipment.setcustomerName(userDetailParts[4]);

System.out.println("Enter the number of shipment status :");
int  n = sc.nextInt();


SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy"); 

for (int i=1;i <= n;i++) {
System.out.println("Enter the shipment status " +i+ " details :");
String userDetail1 = sc.next();
String userDetailParts1[] = userDetail1.split(",");
ShipmentStatus SS= new ShipmentStatus();
for (int j = 0; j < userDetail1.length(); j++)
{

SS.setarrivalPort(userDetailParts1[0]); 
SS.setdeparturePort(userDetailParts1[1]); //error is observed on this line
SS.setarrivedDate(sdf1.parse(userDetailParts1[2]));
SS.setdstatus((userDetailParts1[3])); 
}
//System.out.println(Arrays.toString(userDetailParts1));
}

ShipmentBO bo = new ShipmentBO();
bo.displayStatusOfShipment(shipment);

}   
}

输入和错误如下:

输入装运详细信息:

香港STAJU01,科钦,2017年5月20日,karthick

输入装运状态的编号:

3

输入装运状态1详细信息:

香港,加尔各答,2017年5月17日,抵达

线程中的异常";主";java.lang.ArrayIndexOutOfBoundsException:索引1超出长度1的界限在Section5.TestMain.main(TestMain.java:51(

问题就在这里:

String userDetail1 = sc.next();
String userDetailParts1[] = userDetail1.split(",");

和:

Hong Kong,Kolkata,17-05-2017,arrived

sc.next((将捕获单个字符串令牌,因此";洪";。我想你想要sc.nextLine((。

最新更新