java - "XX" 已定义

java - "XX" is already defined

private String createOrderSummary(String orderPersonName, int quantity, int price) {
    String orderPersonName = "Kaptain Kunal";
    String createOrderSummary = "Name: " + orderPersonName;
    createOrderSummary = createOrderSummary + "\nQuantity: " + quantity;
    createOrderSummary = createOrderSummary + "\nTotal: " + price;
    createOrderSummary = createOrderSummary + "\nThank you!";
    return createOrderSummary;
}

它说 "orderPersonName" 已经定义。我在上面看到了 2 次,但我不明白,因为不是第一个 "defining" 和第二个 "utilizing"?

你能解释一下吗?

谢谢 :)

它已经在函数的头部定义了;您不能再次创建相同的变量;只需替换

String orderPersonName = "Kaptain Kunal";

orderPersonName = "Kaptain Kunal";

这里有两个问题。首先是您有一个与局部变量同名的参数。如果您只是取出重新声明但保留对 orderPersonName 的赋值,如其他地方所建议的那样,您的代码将编译并 运行,但您仍然会遇到第二个问题 - 您将覆盖方法的副本(因此无法访问)传递给方法的值,这可能不是您想要的。例如,如果我调用你的方法:

createOrderSummary("Cupán Tae", 1, 100);

它将 return 一个以 Name: Kaptain Kunal 开头的字符串,这没有意义。

很可能您只想删除整个 String orderPersonName = "Kaptain Kunal"; 而不是将字符串传递到方法中,例如:

createOrderSummary("Kaptain Kunal", 1, 100);

此外,为避免意外引入第二个问题,您应该考虑将参数设置为 final - 然后编译器将不允许您在方法内重新分配它们。

private String createOrderSummary(final String orderPersonName, final int quantity, final int price)