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

Java: How to split a string array and access the splitted parts of the string?

我必须编写一个程序,将 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 的数组。

String[] empDetString = new String[2];

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

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

你有 java.lang.ArrayIndexOutOfBoundsException.

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

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() 分配 return 值。尝试类似的东西:

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;
    }
}