我正在创建一个小实用程序。在此程序中,我尝试将数组分配给 Java 对象,如下所示:
new Food( name, state, arrayOfSymptoms, comment, isCategory)
,其中 arrayOfSymptoms 是我遇到问题的数组。
当我将数组的内容发送到输出日志时,[sym1, sym2, sym3, sym4]
。
然而,构造完成后,数组看起来像这样: [sym1, sym1, sym2, sym3, sym4]
有人知道解决此问题的简单方法吗?还是我必须创建大量额外的代码来删除和移动索引?
提前谢谢您!
编辑:
构造函数之前的代码:
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": "测试食物", "state": 0, "症状":[{"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 + "}";
}
希望这些新信息有帮助!
最佳答案
您在症状ToJSON()中缺少“其他”:
public String symptomsToJSON() {
String allSymptoms = "";
if(getSymptoms() != null) {
for (int i = 0; i < symptoms.length; i++) {
if (i == 0)
allSymptoms += symptoms[i].toJSON();
//NOTE: Without this, the preceding line gets printed twice for i==0
else
allSymptoms += "," + symptoms[i].toJSON();
}
}
return allSymptoms;
}
``
关于java - java应用程序中重复数组的第一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980704/