-2

私はArrayList入力があり、そのArrayListから2つの数値を取得し、それらを減算する必要があるコードを書いています。これを実行すると、「シンボルが見つかりません」というエラーが発生します。なぜこのエラーが発生するのですか?

public static double[] profits( ArrayList<MenuItem> items )
{
 double[] lol = new double[items.size()];
 for ( MenuItem z : items )
  {
     for ( int i = 0; i < lol.length  ; i++ )
      {
        lol[i] = roundMoney(getPrice() - getCost());
      }
    return lol;
  }
}

これはメインクラスです:

     ArrayList<MenuItem> items = new ArrayList<MenuItem>();
    items.add( new MenuItem( "Alliteration Armadillo", 20.25, 3.15, 1, true ) );
    items.add( new MenuItem( "Consonance Chameleon", 5.45, 0.75, 0, false ) );
    items.add( new MenuItem( "Assonance Bass", 1.95, 0.50, 1, false ) );

    double[] t = profits( items );

    for ( double d : t )
      System.out.print( printAmount( d ) + " " );

私の出力は、{17.104.701.45}を出力する必要があるdoubleの配列です。

The error says:

TC1.java:17: cannot find symbol 

symbol  : method getPrice()

If this isn't enough information then here is the whole class:

public class MenuItem 
{ 
  private String myName; 

  private double myPrice, 
                 myCost; 

  private int    myCode; 

  private boolean myAvailability; 

  public MenuItem( String name, double price, double cost, int code, boolean available ) 
  { 
    myName = name; 
    myPrice = price; 
    myCost = cost; 
    myCode = code; 
    myAvailability = available; 
  } 

  public String getName() { return myName; } 
  public double getPrice() { return myPrice; } 
  public double getCost() { return myCost; } 
  public int getCode() { return myCode; } 
  public boolean available() { return myAvailability; } 

  // Create your method here 
  public String menuString() 
  { 
  return getName() + " ($" + getPrice() + ")"; 
  } 

  public static double roundMoney( double amount ) 
  { 
    return (int)(100 * amount + 0.5) / 100.0; 
  } 

  public static String printAmount( double d ) 
  { 
    String s = "" + d; 
    int k = s.indexOf( "." ); 
    if ( k < 0 ) 
      return s + ".00"; 
    if ( k + 1 == s.length() ) 
      return s + "00"; 
    if ( k + 2 == s.length() ) 
      return s + "0"; 
    else 
      return s; 
  } 
} 

F

4

2 に答える 2

4

最初のコードスニペットで、getPrice()andgetCost()z.getPrice()andに置き換えz.getCost()ます。

ここで、必要な出力を取得するには、最初のスニペットを次のように修正します。

public static double[] profits(ArrayList<MenuItem> items)
{
    double[] lol = new double[items.size()];
    int i = 0;
    for (MenuItem z : items)
    {
        lol[i] = roundMoney(z.getPrice() - z.getCost());
        i++;
    }
    return lol;
}
于 2012-08-01T03:22:16.810 に答える
1

zタイプのオブジェクト参照変数を使用してそのメソッドにMenuItemアクセスするのを忘れてしまったgetPrice()getCost()

ドット演算子zとともに使用して、メソッドを呼び出します。

例えば:

z.getPrice()z.getCost()

于 2012-08-01T03:28:11.313 に答える