不兼容的类型:返回一个新的String对象

时间:2017-07-29 00:35:42

标签: java string oop

我一直致力于编写自己的自定义String方法的小项目。 (替换,concat等...)在面向对象的设计中操纵字符串。 在我的类定义(MyString)中,我编写了一个concat()方法,其返回类型为MyString。

width: auto !important; /*Keep the aspect ratio of the image*/
height: 140px !important;
margin: 0 auto 1em auto; /*Center the image*/

在我的驱动程序中,用户将输入一个字符串。然后被提示输入另一个要连接的字符串。当我去调用方法时,我得到一个不兼容的类型错误,说我发送到它的字符串(compString)不能转换为新的MyString。我创建了一个新的MyString对象,并发送了新的String,我认为这是正确的做法...

public MyString concat(MyString sent)
{
    char[] newString = new char[sequence.length + sent.sequence.length];
    for(int i = 0; i< sequence.length;i++)
    {
        newString[i] = sequence[i];
    }
    for(int i = sequence.length; i < newString.length; i++)
    {
        newString[i] = sent.charAt(i - sequence.length);
    }
    sent.sequence = newString;
    return sent;

我想将compString连接到原始字符串上,两者都是MyStrings。我怎么去调用这个方法? &#34; MS&#34;作为原始字符串的引用变量。我需要一个新的MyString对象来实现这个目标吗?

MyString ms = new MyString(compString);
System.out.println("Calling the concat() method: " + ms.concat(compString) );

以下是我的构造函数。

2 个答案:

答案 0 :(得分:3)

您已将String传递给期望concat()的{​​{1}}方法。首先尝试将它包装在你的班级中:

MyString

我必须承认,这仍然没有多大意义。 ms.concat(new MyString(compString)) 已经是ms的包装器。你想把一个字符串连接到自己吗?然后只需compString

答案 1 :(得分:0)

您需要覆盖toString功能,以便println()功能正确打印出自定义字符串。

您还需要匹配MyString功能的预期concat(MyString sent)类型参数。

类似的东西:

class MyString {
    public String toString()
    {
        return sequence;
    }
}

MyString ms = new MyString(compString);
// making assumption that compString is a standard string
System.out.println("Calling the concat() method: " + ms.concat(new MyString(compString)) );