我应该如何将我的方法(带数组)放在 java 的 switch 语句中?
how should i put my method(with array) in a switch statement in java?
在 switch 语句中放置方法(带有数组代码)的正确方法是什么?
public static void prtEmployees(String empNo[], String Name[], int rate[]) {
System.out.println("Employee No. Employee Name Rate/Hour");
for(int i = 0; i < empNo.length; i++) {
System.out.printf("%s: %s", empNo[i], Name[i], rate[i]);
}
}
private void Action(int choice) {
switch(choice) {
case 1:
prtEmployees(); // im having an error here
break;
您的代码中的问题不在于使用开关,而是使用错误数量的参数调用方法。
prtEmployees 方法需要 3 个参数:
- 员工编号的字符串数组
- 员工姓名的字符串数组
- 员工费率整数数组
3个参数总是需要放置。
根据你的代码片段,我看不到你的输入在哪里,你的员工数据来自哪里。但是我创建了一个示例,我在主 class 中使用一些虚拟数据调用您的方法来举个例子:
public class Main {
public static void main(String[] args) {
String[] employeeNos = {"1", "2", "3"};
String[] names = {"Alfred", "James", "Siegfried"};
int[] rates = {2,3,5};
Action(1, employeeNos, names, rates);
Action(2, employeeNos, names, rates);
}
public static void prtEmployees(String[] employeeNumbers, String[] names, int[] rates) {
System.out.print("Employee No.\tEmployee Name\tRate/Hour\n");
for(int i = 0; i < employeeNumbers.length; i++) {
System.out.printf("%s.\t%s\t%d\n", employeeNumbers[i], names[i], rates[i]);
}
}
private static void Action(int choice, String[] employeeNos, String[] names, int[] rates) {
switch (choice) {
case 1:
prtEmployees(employeeNos, names, rates);
break;
case 2:
System.out.println("No employee print because of choice 1");
break;
default:
throw new IllegalArgumentException("Only choice 1 and 2 are allowed");
}
}
}
这给出了输出:
Employee No. Employee Name Rate/Hour
- Alfred 2
- James 3
- Siegfried 5
Only choice 1 and 2 are allowed
说明
首先,我使用选项 1 和一些虚拟数据调用操作方法,它将虚拟数据传递给打印方法,它会打印出员工数据的 3 列。
然后,我使用选择值 2 调用相同的方法,它会额外打印一行,只是为了说明它的功能。
只是为了好玩,我添加了一个默认行为,即除 1 和 2 之外的其他值将引发异常。
在 switch 语句中放置方法(带有数组代码)的正确方法是什么?
public static void prtEmployees(String empNo[], String Name[], int rate[]) {
System.out.println("Employee No. Employee Name Rate/Hour");
for(int i = 0; i < empNo.length; i++) {
System.out.printf("%s: %s", empNo[i], Name[i], rate[i]);
}
}
private void Action(int choice) {
switch(choice) {
case 1:
prtEmployees(); // im having an error here
break;
您的代码中的问题不在于使用开关,而是使用错误数量的参数调用方法。 prtEmployees 方法需要 3 个参数:
- 员工编号的字符串数组
- 员工姓名的字符串数组
- 员工费率整数数组
3个参数总是需要放置。
根据你的代码片段,我看不到你的输入在哪里,你的员工数据来自哪里。但是我创建了一个示例,我在主 class 中使用一些虚拟数据调用您的方法来举个例子:
public class Main {
public static void main(String[] args) {
String[] employeeNos = {"1", "2", "3"};
String[] names = {"Alfred", "James", "Siegfried"};
int[] rates = {2,3,5};
Action(1, employeeNos, names, rates);
Action(2, employeeNos, names, rates);
}
public static void prtEmployees(String[] employeeNumbers, String[] names, int[] rates) {
System.out.print("Employee No.\tEmployee Name\tRate/Hour\n");
for(int i = 0; i < employeeNumbers.length; i++) {
System.out.printf("%s.\t%s\t%d\n", employeeNumbers[i], names[i], rates[i]);
}
}
private static void Action(int choice, String[] employeeNos, String[] names, int[] rates) {
switch (choice) {
case 1:
prtEmployees(employeeNos, names, rates);
break;
case 2:
System.out.println("No employee print because of choice 1");
break;
default:
throw new IllegalArgumentException("Only choice 1 and 2 are allowed");
}
}
}
这给出了输出:
Employee No. Employee Name Rate/Hour
- Alfred 2
- James 3
- Siegfried 5 Only choice 1 and 2 are allowed
说明 首先,我使用选项 1 和一些虚拟数据调用操作方法,它将虚拟数据传递给打印方法,它会打印出员工数据的 3 列。 然后,我使用选择值 2 调用相同的方法,它会额外打印一行,只是为了说明它的功能。 只是为了好玩,我添加了一个默认行为,即除 1 和 2 之外的其他值将引发异常。