2012-01-19 12 views
0

問題が発生しています。私はユーザーが別のファイル内のメソッドのパラメータを入力できるようにしようとしています。しかし、それは私に2つのエラーを与えています。誰でも私を喜ばせることができます入力とアライラリストを使用する際のトラブル

public int countItem(Item purchase) 
    { 
     int quantity = 0; 
     if(cart.indexOf(purchase) == -1) 
      quantity = 0; 
     else 
      quantity = purchase.getQuantity() ; 

     return quantity; 
      } 

これは私の2番目のファイルのものです。

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

また、3番目のエラーが発生しました。

error: method countItem in class ShoppingCart cannot be applied to given types; 
+0

は、2番目のファイルで宣言されていますか? – Reddy

+2

私はあなたのフラッシュドライブ上のフォルダの名前が好きです –

+0

おそらくもっと文脈が必要です。入力とは何ですか?最も簡単なことは、2番目のファイルのどこかに「購入」が定義されているかどうかです。そうでない場合は、次のように言います:Item purchase = input.nextline(); 3番目のエラーの場合は – James

答えて

0

購入する必要があります。

String purchase

+2

あなたはもっと注意が必要です!それはpurcashではなく、 'purchase'です。 – MockerTim

0

プログラムは変数purchaseが何であるかを知らないので、あなたが取得しているエラーです。基本的には、呼び出された時点で範囲内にあるpurchaseという名前のオブジェクトはありません。

メインメソッドの全範囲を表示するコードをいくつか追加すると、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()にする必要があります。あなたはcountItem()方法のみItemオブジェクトを受け入れているので、ItemオブジェクトにStringからあなたpurchaseオブジェクトを変換する必要が念頭に

ベア。ScannerクラスのnextLine()メソッドは、Stringオブジェクトのみを返します。オブジェクトをItemオブジェクトに直接挿入することはできません。別のコンパイラエラーが発生します。あなたはStringにかかる新しいItemオブジェクトのコンストラクタを持っていた場合は、たとえばについては、:あなたの第3の誤りについては

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

、あなたは、タイプItemの一つのパラメータに取るようにあなたのcountItem()メソッドを宣言していましたあなたのコードではパラメータなしで呼び出すので、コンパイラはそれについて不満を持ちます。

関連する問題