1

get/set メソッドに本当に苦労しています。基本的な概念を理解しています。最初に値を設定してから取得します。すでに学んだ最小限の概念では、それに関する情報を見つけるのはかなり難しいと感じています. 私は第 6 章または初めての Java とプログラミングのクラスに参加しており、すべてオンラインです。set/get メソッドを使用する他のいくつかのクラスを作成しましたが、それらはこのプロジェクトに実際には適合しないようです。

public class Purchase{
   int inv;
   double sale;
   double tax;
   double taxAmount = 0.05;

public int getInv()
{
   return inv;
}
public void setInv(int inv)
{
   inv = inv;
}

public void setSale(double s)
{
   sale = s;
   tax = sale * taxAmount;
}
public double getSale()
{
   return sale;
}

//display
public void display()
{
System.out.println("Invoice number: " + getInv() + "\nSale amount: $" + getSale() + "\nTax: $" + tax + "\nTotal: $" + (tax + sale));
}
}

import java.util.Scanner;
public class CreatePurchase{
public static void main(String[] args)
{
   Purchase one = new Purchase();

   Scanner input = new Scanner(System.in);
   do
   {
   System.out.print("Please enter you invoice number. This will be a number between 1000 and 8000.  ");
   inv = input.nextInt();
   one.setInv(inv);
   }
   while(inv < 1000 && inv > 8000);
   {
   System.out.println("Please enter the amount of your sale.  ");
   sale = input.nextInt();
   }
}
}

CreatePurchase クラスは完成していませんが、コンパイルして、表示されるたびにすべての変数について以下を取得します。

CreatePurchase.java:16: error: cannot find symbol
      inv = input.nextInt();
      ^

デフォルトのコンストラクタが作られているというのが私の理解だったので、追加せずにCreatePurchaseで呼び出しました。助言がありますか?

4

3 に答える 3

1

メソッドで変数invを宣言していませんmain。このステップで inv = input.nextInt(); 、プログラムを以下に変更します

int inv = 0;
 Scanner input = new Scanner(System.in);
   do
   {
   System.out.print("Please enter you invoice number. This will be a number between 1000 and 8000.  ");
   inv = input.nextInt();
   if(inv >1000 & inv <8000)
        one.setInv(inv);//add to one variable only if its correct,otherwise ignore it
   }
   while(inv < 1000 && inv > 8000);
于 2013-09-06T01:38:51.307 に答える
1

少なくとも 2 つの問題があります。まず、より大きなコンテナー (スコープ) にある別の変数と同じ名前の新しい変数を作成できます。この場合、新しい変数は外側の変数を「非表示」または「影」にします。あなたのsetInvメソッドでは、あなたが言うときinv = inv両方 invの s は最も内側の変数、メソッド シグネチャの変数を参照します。inv引数をクラスのフィールドに保存するには、外側の:を指定する必要がありますthis.inv = inv;

あなたのクラスでは、何も定義されCreatePurchaseていません。invに 1 つありPurchaseますが、それはあちらにあります。ここではありません。int inv;の直後に宣言するだけですPurchase one

これら 2 つのエラーに基づいて、Java の変数スコープに関する記事またはチュートリアルを読んで、どの変数がどこでアクセスできるかに関する規則を学ぶことをお勧めします。

于 2013-09-06T01:36:36.970 に答える