我遇到了麻烦。我试图允许用户在另一个文件中输入方法的参数。但它给了我两个错误。任何人都可以帮助我
public int countItem(Item purchase)
{
int quantity = 0;
if(cart.indexOf(purchase) == -1)
quantity = 0;
else
quantity = purchase.getQuantity() ;
return quantity;
}
这是我的第二个档案。
System.out.println ("What item do you want to find?");
purchase = input.nextline(); //ERROR ERROR
System.out.println("You have " + basket.countItem() + purchase + "soup in your cart."); // ERROR
这些是我得到的错误。
--------------------Configuration: <Default>--------------------
F:\School\CS I AP\Chapter 7\Shopping Cart Lab\Shop.java:71: error: cannot find symbol
purchase = input.nextline();
^
symbol: variable purchase
location: class Shop
F:\School\CS I AP\Chapter 7\Shopping Cart Lab\Shop.java:71: error: cannot find symbol
purchase = input.nextline();
我也意识到我遇到了第三个错误。
error: method countItem in class ShoppingCart cannot be applied to given types;
答案 0 :(得分:1)
似乎Java编译器找不到变量purchase
。有几种情况:
Item
类位于另一个文件夹中,尚未导入。 (非常常见的错误)
尚未声明变量purchase
。
变量名称,变量声明或方法名称中的错字错误。
从您的错误中,您似乎没有声明变量purchase
。它应该是:
String purchase = input.nextLine();
另外,你输了一个错字。它应该是nextLine()
而不是nextline()
。
请注意,您需要将purchase
对象从String
转换为Item
对象,因为您的countItem()
方法仅接受Item
宾语。 nextLine()
类中的Scanner
方法仅返回String
对象,您不能将其直接强制转换为Item
对象,否则您将收到另一个编译器错误。 例如,如果你有一个新的Item
对象的构造函数,它接受String
:
Item item = new Item(purchase);
int count = itemCount(item);
至于你的第三个错误,你已经声明你的countItem()
方法接受一个Item
类型的参数,但在你的代码中你没有任何参数调用它,因此编译器抱怨它
答案 1 :(得分:0)
你应该宣布购买。
String purchase
答案 2 :(得分:0)
您得到的错误是因为程序不知道变量purchase
是什么。基本上,在调用它时,范围内没有purchase
名称的对象。
如果您可以发布更多代码以显示Main方法的完整范围,那么这将有助于我们向您展示定义purchase
的位置,以便在调用它时它在范围内。
最后一个错误由()
修复,即:
System.out.println("You have " + (basket.countItem() + purchase) + "soup in your cart.");
或者像这样:
int temp = basket.countItem() + purchase;
System.out.println("You have " + temp + "soup in your cart.");
当然,假设购买是int
。需要更多背景来确保