Ich bin ein kleines Dienstprogramm erstellen. In diesem Programm versuche ich, ein Array zu einem Java-Objekt wie folgt zuzuweisen: new Food(name, state, arrayOfSymptoms, comment, isCategory)
, wobei ArrayOfSymptoms das Array ist, mit dem ich Probleme habe.Duplizieren Sie den ersten Index des Arrays in Java-Anwendung
Wenn ich den Inhalt des Arrays an die Ausgabe log senden, [sym1, sym2, sym3, sym4]
.
Doch nach dem Bau fertig ist das Array wie folgt aussieht: [sym1, sym1, sym2, sym3, sym4]
Kennt jemand eine einfache Möglichkeit, dieses Problem zu beheben, oder muß ich eine Menge zusätzlichen Code erstellen müssen zu löschen und Indizes zu bewegen?
Vielen Dank im Voraus!
Edit:
-Code vor Konstruktor:
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)
);
}
Schafft die Ausgabe hier gezeigt:
CurrSym (0): Name: SYM1, Kommentar: ""
CurrSym (1): Name: Sym2, Kommentar: ""
CurrSym (2): Name: Sym3, Kommentar: ""
CurrSym (3): Name: Sym4, Kommentar: ""
Dies zeigt deutlich, dass das Array 4 Elemente enthält nur. Allerdings, wenn ich das Objekt in JSON umwandeln, wird die Ausgabe wie folgt aus: {"title": "Test Food", "state": 0, "symptoms":[{"name":"Sym1","comment":""},{"name":"Sym1","comment":""},{"name":"Sym2","comment":""},{"name":"Sym3","comment":""},{"name":"Sym4","comment":""}],"comment": "", "isCategory": false}
Der Code, um das Objekt zu JSON konvertieren sieht wie folgt aus:
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 + "}";
}
Hoffnung diese neue Information hilft!
Bitte zeigen Sie uns den Code. – Kode
Stellen Sie eine [mcve] bereit. – Gendarme
Sie haben 'else' nach' allSymptoms + = symptoms [i] .toJSON(); 'vergessen. Andernfalls wird 'allSymptoms + =", "+ symptoms [i] .toJSON();' immer ausgeführt, was einschließt, wenn 'i == 0'. Abstimmung zum Schließen als Tippfehler. – Pshemo