Касманафт
Мыслитель
(6846)
2 месяца назад
Давайте разберем ваш код и исправим ошибки:
```java
public String toString() {
TestHelpErrorInterface<String> THEI = () -> {
String it = ""; // Инициализация для избежания ошибки
for (int i = 0; i < items.length; i++) { // Начинаем с 0
for (int j = 0; j < items_values.length; j++) { // Исправлено j++
it += i + items[i] + " " + items_values[j] + "\n";
}
}
return it;
};
return THEI.get(); // Предполагается, что интерфейс имеет метод get()
}
```
**Исправления и пояснения:**
1. **Ошибка в цикле**
Было: `for (int j=1; j<items_values.length; i++)`
Исправлено: `for (int j=0; j<items_values.length; j++)`
*Пояснение:* Индекс `j` должен инкрементироваться, а не `i`. Также индексация массивов в Java начинается с 0.
2. **Инициализация переменной**
Было: `String it;`
Исправлено: `String it = "";`
*Пояснение:* Переменная должна быть инициализирована перед использованием.
3. **Работа с интерфейсом**
Предполагается, что интерфейс имеет метод (например, `get()`):
```java
interface TestHelpErrorInterface<T> {
T get();
}
```
Тогда вызов будет: `THEI.get()` вместо `THEI.toString()`.
4. **Формирование строки**
Добавлен `+=` и перенос строки `\n` для накопления результата.
**Дополнительные рекомендации:**
- **Проверка массивов:** Убедитесь, что `items` и `items_values` инициализированы и не являются `null`.
- **Производительность:** Используйте `StringBuilder` вместо конкатенации строк в цикле:
```java
StringBuilder sb = new StringBuilder();
for (...) {
sb.append(i).append(items[i]).append(" ").append(items_values[j]).append("\n");
}
return sb.toString();
```
- **Логика:** Если вам нужно соединять элементы массивов попарно, убедитесь, что их длины совпадают.
Столкнулся с моментом , в котором надо прописать логику :
Когда класс Inventory будет вызываться , то будут выводиться 2 массива (один с названиями орудий и огнестрела, а другой с кол-вом их боезапаса или их отсутствие) в методе toString() естественно.
Я пытаюсь сделать это из 2-ух циклов-for и поместить результаты в строку. Но так как изменения будут виднеться только в цикле джава не может вывести это(как я понял)
Я даже через лямбда выражения попробовал зачем-то , но и это без толку. Помогите вы уж мне пожалуйста ВЕЛИКИЕ джава програмеры!
//Ну рил плиииз
Вот код:
package inventory;
import inventory.TestHelpErrorInterface;
public class Inventory {
public Inventory() {
items[0] = null;
items_values[0] = 0;
}
static String[] items = new String[31];
static int[] items_values = new int[31];
// ↓ на этот метод не смотрите , он не доделан
public static void addIn(String a , int b) {
System.out.println("You've got a new thing in inventory");
}
public String toString() {
TestHelpErrorInterface<String> THEI = () -> {
String it;
for (int i=1;i<items.length;i++) {
for (int j=1;j<items_values.length;i++) {
it = i + items[i] + " " + items_values[j];
}
}
return it;
};
return THEI.toString();
}
}