java中的for循环语法错误或if语句语法错误?[已关闭]

s5a0g9ez  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(238)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
19个小时前关门了。
Improve this question
这是一个非常简单的问题,但我有这个方法,我认为它没有什么问题,但由于某种原因它不工作。它编译,但我希望在cmd中得到一个打印输出,表明食物被添加到列表中。只有当你键入单词“food”、食物名称和一个双精度浮点数时,才会调用这个方法(每份食物的卡路里)。基本上,它是在一个名为foodList的数组列表中存储食物名称和每份食物的卡路里。
第一个if语句是让程序通过比较列表中的食物名称来检查你是否试图添加一种已经添加到列表中的食物。如果for循环得到命中,那么它会自动识别出用户想要更新所述食物的卡路里。
else if语句检查c(servings)是否等于0,然后将食物及其所述卡路里添加到列表中。
最后一个else语句是不言自明的。如果输入了一个负的servings,那么它会告诉用户。
然而,在运行程序时,代码不工作。任何修复,或者可能是一些语法错误,我可能没有注意到?谢谢!

public String addFood( String n, double c) {
    for (int x = 0; x < foodList.size(); x++) {
        if (n.equals(foodList.get(x).getFoodName())) {
            currentFood.updateCalories(c);
        } else if (c > 0) {
            foodList.add(new Food (n,c));
            System.out.println("Added Food " + n + " with " + c + " kcal.");
        } else if (c < 0) {
            System.out.println("Negative calories detected. Please try again.");
        }
    }

返回foodName;}

ckocjqey

ckocjqey1#

我想你的程序的目的是寻找食物,并根据它是否被见过而做不同的事情。把“寻找食物”作为一个单独的步骤可能会有帮助。这里我添加了一个“帮助方法”来做这件事。

private int findFood(String name) {
    for (int x = 0; x < foodList.size(); x++) {
        if (name.equals(foodList.get(x).getFoodName())) {
            return x;
        }
    }
    return -1;
}

public String addFood(String name, double cals) {
       int index = findFood(name);
       if (index >= 0) {  // found
            currentFood.updateCalories(cals);
       } else if (cals > 0) {
            foodList.add(new Food(name, cals));
            System.out.println("Added Food " + name + " with " + cals + " kcal.");
        } else if (cals < 0) {
            System.out.println("Negative calories detected. Please try again.");
        }
    }

总的来说,这里的教训是:(a)你不必把所有的逻辑都塞进一个方法中,(b)把逻辑分解通常有助于澄清正在发生的事情。
(The'currentFood'的函数对我来说似乎很模糊,因为它在原始代码中没有被任何东西修改过。'currentFood'应该被设置为在索引'x'处找到的食物吗?)

相关问题