2016-10-14 15 views
0

これはあまりにも初心者である場合はお詫び申し上げます。私は自分の[Object o]がどのように範囲外にあるのか、それがシンボルを見つけることができない理由を理解しています。java:シンボルを見つけることができません。記号:可変長

しかし、私は問題を解決できないようです。私はどこが間違っているのか完全にわかりません。私はこれが私の課題の最後の問題だと思っています。それは深夜です。

任意の助けいただければ幸いです:)

public class Square implements Shape 
{ 
    double length; 

    public Square(double length) 
    { 
     this.length = length; 
    } 

    @Override 
    public String toString() 
    { 
     return "Square"; 
    } 

    @Override 
    public boolean equals(Object o) 
    { 
     if (o == null) 
      return false; 
     if(this.getClass() != o.getClass()) 
      return false; 
     if (o.length == this.length) 
      return true; 
     else 
      return false; 
    } 

    @Override 
    public int hashCode() 
    { 
     return (int)length % 50; 
    } 
    public double getPerimeter() 
    { 
     return length * 4; 
    } 
} 

C:\Users\RimZ\IdeaProjects\Assignment1\src\Square.java

Error:(24, 22) java: cannot find symbol symbol: variable length location: variable o of type java.lang.Object

if (o.*length* == this.length) 
      return true; 

^問題は、あなたがSquareにあなたのObjectをキャストする必要が

+0

'Object'sはそうではありませんフィールドは 'length'です。オブジェクトをキャストしてチェックします。 – Li357

+0

長さが50の倍数の正方形は '=='と見なされますか?少なくとも、それはあなたのハッシュコードの実装が言っていることです –

答えて

2

ですザッツ:

Square otherSquare = (Square) o; 
... 
if (otherSquare.length == this.length) 
    return true; 
関連する問題