Java 显示信息
在学校的一个项目中,我需要制作一个包含以下选项的菜单系统:Java 显示信息,java,arrays,object,methods,Java,Arrays,Object,Methods,在学校的一个项目中,我需要制作一个包含以下选项的菜单系统: 加载员工数据-提示用户输入要加载的员工人数,然后提示输入每个员工的姓名、id(5位数)和年薪 添加新员工-提示用户输入员工数据、姓名、id和年薪 显示所有员工-将每个员工的数据显示到控制台,每行显示一名员工 检索特定员工的数据-提示用户输入员工id并显示相应员工的数据:id、姓名和工资 检索基于范围工资的员工-提示用户输入最低和最高工资,并显示工资在该范围内的所有员工。在单独的行中显示每个员工的所有信息—姓名、id和薪资 出口 每个菜单
package practice;
import java.util.Arrays;
import java.util.Scanner;
public class Project {
public static Employee[] loadData() {
Scanner scanint = new Scanner(System.in);
Scanner scanstr = new Scanner(System.in);
System.out.println("How many employees would you like to add?"); //Determines how many employees to create
Employee[] employees = new Employee[100];
int numberEmployees = scanint.nextInt();
for (int i = 0; i < numberEmployees; i++) {
System.out.println("Enter name: ");
String empName = scanstr.nextLine();
System.out.println("Enter ID: ");
int empID = scanint.nextInt();
System.out.println("Enter Salary: ");
int empSalary = scanint.nextInt();
employees[i+1] = new Employee(empName, empID, empSalary); //Add employee to array
}
return employees;
}
public static Employee addEmployee() {
Scanner scanint = new Scanner(System.in);
Scanner scanstr = new Scanner(System.in);
System.out.println("Enter name: ");
String empName = scanstr.nextLine();
System.out.println("Enter ID: ");
int empID = scanint.nextInt();
System.out.println("Enter salary: ");
int empSalary = scanint.nextInt();
return new Employee(empName, empID, empSalary);
}
public static void displayEmployees(Employee[] employees) {
for (int i = 0; i < employees.length; i++) {
if (employees[i] != null) {
System.out.println(Arrays.toString(employees));
//System.out.println("Employee Name: " + employees[i].name + " ID: " + employees[i].id + " Salary: " + employees[i].salary);
}
}
}
public static void specificEmployee(Employee[] employees, int id) {
for (int i = 0; i < employees.length; i++) {
if (employees[i].id == id) {
System.out.println("Name: " + employees[i].name + " ID: " + employees[i].id + " Salary: " + employees[i].salary);
}
else {
System.out.println("ID not recognized");
}
}
}
public static void salaryRange(Employee[] employees, int salaryMinimum, int salaryMaximum) {
for (int i = 0; i < employees.length; i++) {
if (employees[i].salary >= salaryMinimum && employees[i].salary <= salaryMaximum) {
System.out.println("Name: " + employees[i].name + " ID: " + employees[i].id + " Salary: " + employees[i].salary);
}
else {
System.out.println("No employees within salary range");
}
}
}
public static void main(String[] args) {
Scanner scanint = new Scanner(System.in);
Scanner scanstr = new Scanner(System.in);
int menuChoice = 0;
while (menuChoice != 6) {
System.out.println("\tMenu:");
System.out.println("1. Load Employee Data");
System.out.println("2. Add New Employee");
System.out.println("3. Display All Employees");
System.out.println("4. Retrieve Specific Employee Data");
System.out.println("5. Retrieve Employees Within Salary Range");
System.out.println("6. Exit");
menuChoice = scanint.nextInt();
Employee[] employees = new Employee[100];
int amountEmployees;
if (menuChoice == 1) {
employees = loadData();
}
else if (menuChoice == 2) {
employees[0] = addEmployee();
}
else if (menuChoice == 3) {
displayEmployees(employees);
}
else if (menuChoice == 4) {
System.out.println("Enter 5 digit employee ID: ");
int id = scanint.nextInt();
specificEmployee(employees, id);
}
else if (menuChoice == 5) {
System.out.println("Enter minimum of salary range: ");
int salaryMinimum = scanint.nextInt();
System.out.println("Enter maximum of salary range");
int salaryMaximum = scanint.nextInt();
salaryRange(employees, salaryMinimum, salaryMaximum);
}
else if (menuChoice == 6) {
break;
}
else {
System.out.println("Invalid Choice");
}
}
scanint.close();
scanstr.close();
}
包装实践;
导入java.util.array;
导入java.util.Scanner;
公共类项目{
公共静态员工[]加载数据(){
Scanner scanint=新扫描仪(System.in);
Scanner scanstr=新扫描仪(System.in);
System.out.println(“要添加多少员工?”);//确定要创建多少员工
员工[]员工=新员工[100];
int numberEmployees=scanint.nextInt();
对于(int i=0;i 如果(employees[i].salary>=salarymimum&&employees[i].salary代码中存在一些问题:
while (menuChoice != 6) {
System.out.println("\tMenu:");
System.out.println("1. Load Employee Data");
System.out.println("2. Add New Employee");
System.out.println("3. Display All Employees");
System.out.println("4. Retrieve Specific Employee Data");
System.out.println("5. Retrieve Employees Within Salary Range");
System.out.println("6. Exit");
menuChoice = scanint.nextInt();
**Employee[] employees = new Employee[100];**
int amountEmployees;
if (menuChoice == 1) {
employees = loadData();
}
您已经在while循环中声明了employees数组,因此每次读取输入时,您都在创建一个新的输入。这完全违背了将员工存储在数组中并稍后检索他们的目的,这也使得分配在menuChoice==1
时变得多余。您必须考虑应该在何处声明数组
public static void specificEmployee(Employee[] employees, int id) {
for (int i = 0; i < employees.length; i++) {
if (employees[i].id == id) {
System.out.println("Name: " + employees[i].name + " ID: " + employees[i].id + " Salary: " + employees[i].salary);
}
else {
System.out.println("ID not recognized");
}
}
}
public static void specific Employee(Employee[]employees,int-id){
对于(int i=0;i
当你声明一个数组时,默认值为NULL,除非你给它们分配一些值。在这里,你正在迭代整个数组并检查雇员ID。如果数组中某个索引的雇员为NULL,你应该考虑会发生什么。你必须检查这些情况。
您创建的另一个方法中也存在类似的问题。我将让您自己调试它
正如@NomadMaker所建议的,您的第二个菜单项只设置数组的元素0。您不能添加两个或更多员工
我建议您尝试干运行代码,如果您觉得困难,请尝试在ide中调试它。您可能应该为每个数组包含一个整数,用于定义所使用的元素数。此外,除非您将每个元素设置为null,否则这些元素不能保证为null。您的第二个菜单项仅设置数组的元素0。Y您不能添加两个或更多员工。我建议您花一些时间学习如何使用ide的调试器。