2012-01-19 47 views
0

我遇到了麻煩。我試圖讓用戶在另一個文件中輸入一個方法的參數。但是它給了我兩個錯誤。誰能幫我請使用輸入和數字列表的問題

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

是在第二個文件中聲明的購買? – Reddy

+2

我喜歡閃存驅動器上文件夾的名稱 –

+0

可能需要更多上下文。什麼是輸入?最簡單的事情可能是:在第二個文件中定義的「購買」?如果沒有,你想說:Item purchase = input.nextline();第三個錯誤爲 – James

回答

0

您應該申報購買。

String purchase

+2

你應該更專心!這是'購買',而不是purcash。 – MockerTim

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。需要確定更多上下文

1

看起來Java編譯器找不到變量purchase。有以下幾種情況:

  1. Item類在另一個文件夾中,尚未導入。 (非常常見的錯誤)

  2. 變量purchase尚未聲明。

  3. 變量名稱,變量聲明或方法名稱中的錯字錯誤。

從您的錯誤,似乎你還沒有聲明變量purchase。它應該是:
String purchase = input.nextLine();

此外,你犯了一個錯字。它應該是nextLine()而不是nextline()

記住,你需要在你purchase對象從String轉換成Item對象,因爲你countItem()方法只接受一個Item對象。Scanner類中的nextLine()方法僅返回String對象,您不能直接將其強制轉換爲Item對象,否則將會發生另一個編譯器錯誤。 例如,如果你有一個構造一個新的Item對象,需要在String

Item item = new Item(purchase); 
int count = itemCount(item); 

至於你的第三個錯誤,你宣佈你的countItem()方法採取Item類型的一個參數,但是在你的代碼中你沒有任何參數調用它,因此編譯器會抱怨它。