java - java应用程序中重复数组的第一个索引

标签 java arrays json constructor

我正在创建一个小实用程序。在此程序中,我尝试将数组分配给 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/

相关文章:

java - 我不断收到 java.util.InputMismatchException 错误,如何修复它?

javascript - getjson 查询不起作用

javascript - AngularJS HTTP Get JSON 不会显示

javascript - Symfony 操作无法检索正确的 AJAX JSON 数据

java - 编程问题-抛硬币

java - Socrata URL 适用于 Chrome,不适用于 Android 应用

java - ImageIO 无法将缓冲图像写入文件

python - 如何找到 pandas 时间序列的最后一个局部最大值?

javascript - 添加输入名称为 ="TotalInline[]"的所有值

java - 通过方法传递数组时将数组数据存储到二维数组