java - “XX”已经定义

时间:2018-05-05 15:28:15

标签: java string 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次以上,但我没有得到它,因为不是第一个“定义”,第二个“利用”?

你能解释一下吗?

谢谢:)

2 个答案:

答案 0 :(得分:4)

它已经在函数的头部定义;你不能再创建同一个变量;只需替换

String orderPersonName = "Kaptain Kunal";

orderPersonName = "Kaptain Kunal";

答案 1 :(得分:2)

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

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

它将返回一个以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)