Java:如何拆分字符串数组并访问字符串的拆分部分?

时间:2015-11-27 12:47:10

标签: java arrays string split

我必须编写一个程序,用于保存10名员工的信息(员工编号,姓氏,名字,职位,薪资,百分比出勤率,休闲叶数和剩余病叶数)(employeeDetailsS​​trings) )由格式为

#分隔
  

E101#John #Wills#Software Engineer#40000#78#25#12

系统应允许用户根据其姓氏或员工编号搜索员工,然后显示与该员工相对应的所有详细信息。如果找不到员工,系统应该给出错误信息。 该程序使用一个数组来保存10名员工的详细信息。

这是我到目前为止所得到的:

import java.util.*;

public class labsheets {

        public static void main(String args[]){


            Scanner sc= new Scanner(System.in);

            String[] empDetString= new String[10];
            String input;
            int i;

            System.out.println("Enter emp details: ");

            for (i=0; i<empDetString.length; i++){

                empDetString[i]= sc.nextLine();
                empDetString[i].split("#");

                }

            }

我不知道如何拆分由标签分隔的这10个员工详细信息中的每一个,显然我的方法是错误的。 通过员工编号或姓氏找到匹配后,输出应如下所示。

输出

Employee Number is : E101 
Surname : Wills
First Name : John
Position : Software Engineer
Salary : 40000
% Attendance : 78
Casual Leaves left : 25 
Sick Leaves left : 12

2 个答案:

答案 0 :(得分:1)

因为你有这个大小为2的数组。

String[] empDetString = new String[2];

您应该添加大于2的大小,因为该数组不会自动递增。 为此,当你尝试这样做时。

System.out.println("First name: " + empDetString[i + 2]);

您有java.lang.ArrayIndexOutOfBoundsException

答案 1 :(得分:1)

您正在访问范围之外的项目,例如此行

empDetString[i+1]

封装在此循环中

for(i=0;i<empDetString.length;i++){

不可避免地,您的i将超过数组的大小。

要解决此问题,因为您的上一次通话是empDetString[i+7],请确保限制您的for循环,如下所示:

for(i = 0; i < empDetString.length - 7; i++){

修改

此外,if语句中没有大括号。只有那之后的第一行才会被封装在条件中。

最后,您没有为split()指定返回值。尝试类似:

String[][] empDetString= new String[2][10];
String input;
int i;

System.out.println("Enter emp details: ");

for (i=0; i<empDetString.length; i++){
  empDetString[i]=sc.nextLine().split("#");
}

之后您可以访问:

for(i=0;i<empDetString.length;i++){

    if(input.equals(empDetString[i][0])) {
        System.out.println("Employee number:"+ empDetString[i][0]);
        System.out.println("Surname: "+ empDetString[i][1]);
        System.out.println("First name: "+empDetString[i][2]);
        System.out.println("Position: "+empDetString[i][3]);
        System.out.println("Salary: "+empDetString[i][4]);
        System.out.println("% Attendance: "+empDetString[i][5]);
        System.out.println("Casual Leaves Left: "+empDetString[i][6]);
        System.out.println("Sick leaves left: "+empDetString[i][7]);
        break;
    }
}