Я создаю небольшую служебную программу. В этой программе я пытаюсь назначить массив объекту Java следующим образом: new Food(name, state, arrayOfSymptoms, comment, isCategory)
, где arrayOfSymptoms - это массив, с которым у меня проблемы.Дубликат первого индекса массива в приложении Java
Когда я отправляю содержимое массива в журнал вывода, [sym1, sym2, sym3, sym4]
.
Однако после завершения строительства массив выглядит следующим образом: [sym1, sym1, sym2, sym3, sym4]
ли кто-нибудь знает простой способ решить эту проблему, или я должен создать много дополнительного кода для удаления и перемещения индексов?
Спасибо заранее!
Edit:
Код Перед конструктором:
Symptoms[] allSyms = new Symptoms[selSyms.size()];
for (int j = 0; j < selSyms.size(); j++) {
allSyms[j] = selSyms.get(j);
System.out.println("CurrSym(" + j + "): " + allSyms[j]);
}
System.out.println("Amount of symptoms selected: " + allSyms.length);
if( // Basic Form Validation
!nameField.getText().isEmpty()) {
if (!isCategory.isSelected())
MainController.makeLeaf(
MainController.categoryTitles.indexOf(categories.getValue()),
new Food(
nameField.getText(),
stateChoice.getSelectionModel().getSelectedIndex(),
allSyms, // Symptoms Here
"",
false)
);
}
Создает результат, показанный здесь:
CurrSym (0) Имя: Sym1, Комментарий: ""
CurrSym (1): Имя: Sym2, Комментарий: ""
CurrSym (2): Имя: Sym3, Комментарий: ""
CurrSym (3): Имя: Sym4, Комментарий: ""
Это ясно показывает, что массив содержит только 4 элемента. Однако, когда я преобразовать объект в JSON, выход становится, как показано ниже: {"title": "Test Food", "state": 0, "symptoms":[{"name":"Sym1","comment":""},{"name":"Sym1","comment":""},{"name":"Sym2","comment":""},{"name":"Sym3","comment":""},{"name":"Sym4","comment":""}],"comment": "", "isCategory": false}
Код для преобразования объекта в JSON выглядит следующим образом:
public String symptomsToJSON()
{
String allSymptoms = "";
if(getSymptoms() != null)
{
for (int i = 0; i < symptoms.length; i++) {
if (i == 0)
allSymptoms += symptoms[i].toJSON();
allSymptoms += "," + symptoms[i].toJSON();
}
}
return allSymptoms;
}
public String toJSON()
{
return "{\"title\": \"" + title + "\", \"state\": "+ state + ", \"symptoms\":[" + symptomsToJSON() + "],\"comment\": \"" + comment +"\", \"isCategory\": " + isCategory + "}";
}
Надежда эта новая информация помогает!
Пожалуйста, покажите нам код. – Kode
Обеспечьте [mcve]. – Gendarme
Вы забыли про 'else' после' allSymptoms + = симптомы [i] .toJSON(); '. В противном случае 'allSymptoms + =", "+ симптомы [i] .toJSON();' будут всегда выполняться, что включает в себя, когда 'i == 0'. Голосование закрывается как опечатка. – Pshemo