2016-12-02 5 views
-2

私はこの方法で定義されている:ターミナルで[email protected]:私はこのような出力を得ていた@Overrideを添加する前に、コマンドラインを介してこれを実行していたときオーバーライドしないで「何か@ 677327b6」を取得せずにJavaオブジェクトを印刷するにはどうすればよいですか?

@Override 
    public String toString(String line) 
    { 
     String[] categories = line.split("; "); 
     String[] info; 

     // Get the suspect's information 
     info = categories[0].split(", "); 
     suspect = new Person(info[0].charAt(0), Integer.parseInt(info[1]), Double.parseDouble(info[2])); 
     String str = ""; 
     if (info[0].charAt(0) == 'M') 
      str += "Male, "; 
     else if (info[0].charAt(0) == 'F') 
      str += "Female, "; 
     else 
      str += "unknown, "; 
     str += Integer.parseInt(info[1]) + "'s, "; 
     str += Double.parseDouble(info[2]) +"m"; 
     System.out.println(str); 
     return str; 
    } 
} 

を。

私はこれが出力されているハッシュコードであることを理解しています。 しかし、toString()メソッドで定義したようにstrを出力する必要があります。

問題は、Detective型のtoString(String)メソッドはスーパータイプメソッドをオーバーライドまたは実装する必要があります。私の唯一の解決策は、@Override注釈を削除することです。

これを上書きするのではなく、他の方法で正しい値にアクセスできますか?

+1

eclipseを使用している場合は、メニューのsource-> toStringを生成することができます。あなたはすべてのデータを印刷するvoidメソッドを取得しました – XtremeBaumer

答えて

1

これはObjectクラスで宣言されている通常のtoStringメソッドではありませんか?

@Override 
public String toString(String line) 

オブジェクト上の1が、任意の引数を取りません...

@Override 
public String toString() { ... } 

lineはどこから来るのでしょうか?

lineを(Detective?)クラス自体に保存した場合は、正しいtoStringという署名を使用できます。

これが役に立ちます。

+0

はい私は探偵クラスにそれを保存しました。私は引数を削除し、行をヌルに初期化しました。今私はDetective.toString(Detective.java:82)java.lang.String.valueOf(String.java:2994)で \t \tでのjava.lang.NullPointerExceptionが \tこれらのエラーは 'スレッドでの例外 "メイン" を取得しますjava.lang.StringBuilder.append(StringBuilder.java:131) ' – sd2000e

+0

@ sd2000eどんな行82であるか分かりませんが、' line'は 'null'に設定されていますか?デバッガを使用し、 'toStirng'コードを実行してください – BretC

+0

私の謝罪です。私は私のコメントで間違いを犯した。私はtoString内でnullにラインを初期化しました。 – sd2000e

関連する問題