Java: 如何拆分字符串数组并访问字符串的拆分部分?
Java: How to split a string array and access the splitted parts of the string?
我必须编写一个程序,将 10 名员工的信息(员工编号、姓氏、名字、职位、薪水、出勤率、临时休假数和剩余病假数)保存在一个字符串中(employeeDetailsStrings) 由 #
分隔,格式为
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;
}
}
我必须编写一个程序,将 10 名员工的信息(员工编号、姓氏、名字、职位、薪水、出勤率、临时休假数和剩余病假数)保存在一个字符串中(employeeDetailsStrings) 由 #
分隔,格式为
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;
}
}