1

これまでのところ、concat 演算子を使用しようとすると、このエラーが発生します Tester.java:14: cannot find symbol symbol : method concat(MyString) location: class MyString // "hellogoodbye" を出力します

そして、MyString の「hello」オブジェクトを印刷しようとすると、MyString@558ee9d6 が返されます。

public class MyString

{
     private char[] charString;
     private String oneString;


      public  MyString(String string) 
      {
        this.oneString = string;


      }

//second constructor for overloading
    public MyString(char[] s) 
    {

        this.charString = s;
        this.oneString = charString.toString();
    }

//methods
    public String toString( char [] s)
    {
        return new String(s);
    }

    public char charAt(int i) {

        char [] temp = new char[oneString.length()];
        for ( int j = 0; j < oneString.length() ;  j++)
        temp[j] = oneString.charAt(i);
        return temp[i];
    }

    public String concat ( char[] s)
    {
        s.toString();
        String result = oneString + s;
        return result;
    }

    public String concat ( String s)
    {
        String result = oneString + s;
        return result;
    }


}

public class Tester { public static void main (String[] args)

    {
    MyString hello = new MyString("hello");
    System.out.println(hello);  // right now this prints MyString@558ee9d6
    System.out.println(hello.charAt(0));    // works, prints 'h'
    char[] arr = {'g','o','o','d','b','y','e' };
    MyString goodbye = new MyString(arr);
   // System.out.println(hello.concat(goodbye)); // i can't get this line to work
    System.out.println(hello.equals(goodbye)); // works, prints false
    System.out.println(hello.equals(hello));  //works, prints true
    }
    }
4

3 に答える 3

1

charString.toString()Stringオブジェクトの表現を提供しますが、に変換しchar[]ません。char[]String

oneStringその属性に のString表現が含まれている必要がある場合は、char 配列を使用して をcharString作成できます。String

this.oneString = new String(charString);

また、この行

System.out.println(hello);

オブジェクトのString表現を出力します。クラスのクラスのpublic String toString()メソッドをオーバーライドする必要があります。ObjectMyString

@Override
public String toString() {
    return this.oneString; //or similar
}
于 2012-11-14T01:43:45.817 に答える
1

Object を印刷しようとしています:

System.out.println(hello);  // right now this prints MyString@558ee9d6

この場合、 MyString クラス

変数 oneString に対する get メソッドを作成します。

public String getOneString() {return this.oneString;}

そして電話する

System.out.println(hello.getOneString());

別の問題

System.out.println(hello.concat(goodbye));

concat メソッドは MyString クラスではなく文字列を受け取ります

あなたはこれをしたいかもしれません

System.out.println(hello.concat(goodbye.getOneString()));

また

public String concat ( MyString myS)
    {
        String s = myS.getOneString();
        String result = oneString + s;
        return result;
    }

最終結果:

public class Tester { public static void main (String[] args)

    {
    MyString hello = new MyString("hello");
    System.out.println(hello.getOneString());
    System.out.println(hello.getOneString().charAt(0)); 
    char[] arr = {'g','o','o','d','b','y','e' };
    MyString goodbye = new MyString(arr);
    System.out.println(hello.concat(goodbye.getOneString()));
    System.out.println(hello.equals(goodbye)); // works, prints false
    System.out.println(hello.equals(hello));  //works, prints true
    }
    }
于 2012-11-14T01:43:47.910 に答える
0

今、文字配列を文字列に追加しようとしていると思います。s.toString() を呼び出しても、char[] は文字列になりません。それはあなたが持っているようには機能しません。試す

result = oneString + new String(s);
于 2012-11-14T01:48:37.210 に答える