#java
Вопрос:
Итак, у меня есть массив классов (по крайней мере, я так думаю, я новичок в java и программировании в целом), в котором есть вложенный класс с двумя строками и одним символом.
Employee[] emps = {
new Employee(new Name("FirstName",'M', "LastName")), ...
};
У меня есть такие методы, как setid, setwage в сотруднике, и мне нужно использовать массив для замены текущего существующего кода, который был закодирован следующим образом:
Employee emp1 = new Employee(new Name("FirstName",'M', "LastName"));
Employee.setSize(Math.max(emp1.getName().toString().length()));
public static void empIDs(Employee empA,Employee empB,Employee empC,Employee empD){
empA.setId(1);
...
}
public static void printEmps(Employee empA,Employee empB,Employee empC,Employee empD){
System.out.println("nName" "
".repeat(Employee.getSize()-1) "IDtWagetHourstGrosstStart Date");
System.out.println(empA);
...
}
Я попробовал emps[i] с циклом for, но получил ошибку:
Exception in thread "main" java.lang.IllegalArgumentException: count is negative: -24
at java.base/java.lang.String.repeat(String.java:3565)
at Employee.toString(Employee.java:146)
at java.base/java.lang.String.valueOf(String.java:3367)
at java.base/java.io.PrintStream.println(PrintStream.java:1047)
at EmployeeDemo.main(EmployeeDemo.java:32)
и чувствовать себя совершенно потерянным
Комментарии:
1. Что такое метод getSize ? Почему это статический метод ? распечатайте
Employee.getSize()
перед .повторите, и вы поймете, что вам нужно наклониться для самостоятельной отладки2. Это метод для установки максимального количества сотрудников
3. Это статический метод, потому что мой профессор сказал использовать его в getSize()
4. распечатайте
Employee.getSize()
перед .повторите, и вы поймете, что вам нужно самостоятельно выполнить отладку : сделайте это и скажите нам, сколько это стоит
Ответ №1:
Я предполагаю, что ваша проблема заключается в повторении массива с объектами.
Это точно то же самое, что и для примитивных типов данных. например:
Приведенный ниже метод берет массив с сотрудниками и перебирает их всех с помощью расширенного цикла for.
public void iterateArrayAndDoSomething(Employee[] employees)
{
for(Employee emp: employees)
{
// emp is the current employee and you can do whatever you want with it.
}
}
Или с помощью простого цикла:
for(int i = 0; i < employees.length; i )
{
Employee emp = employees[i];
// emp is the current employee and you can do whatever you want with it.
}
P. S: Попробуйте прочитать стек ошибок, там написано, что ошибка связана с .repeat()
методом string
. Это не имеет никакого отношения к циклу, но все же вышеприведенная информация может быть важна для вас.
Комментарии:
1. Попробовал их обоих, и ошибка в Незаконном аргументе для обоих. Вот ссылка на код программы, если это поможет. replit.com/@RoshanLamichha1/EmpProgram#Main.java
2. Вы не можете «догадаться, в чем проблема». Пожалуйста, отвечайте только тогда, когда вы уверены, что проблема и решение ее устраняют. Этот код исправил бы что-то вроде исключения ArrayIndexOutOfBoundsException, и в коде нет использования массива en