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次以上,但我没有得到它,因为不是第一个“定义”,第二个“利用”?
你能解释一下吗?
谢谢:)
答案 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)