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)
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)