2016-04-21 104 views
0

我正在進行一項練習,其中包括創建我自己的String類實現,以及此類中存在的一些方法。我在創建一個返回子字符串的工作方法時遇到了一些麻煩。到目前爲止,我的課程實施如下所示:創建我自己的字符串類/子字符串方法

public class MyString2 { 

    private String s; 

    public MyString2(String s) { 
     this.s = s; 
    } 

    public MyString2 substring(int begin) { 

     String substring = ""; 

     for (int i = begin; i < s.length(); i++) { 
      substring += s.charAt(i); 
     } 
     return new MyString2(substring); 
    } 

} 

該方法背後的想法非常簡單;

創建一個空白子字符串,然後從輸入字符串中從選定索引開始,對每個字符進行連接。下面是測試類的主要方法:

public static void main(String[] args) { 

     MyString2 s1 = new MyString2("string");  
     MyString2 substring = s1.substring(3); 

     System.out.println(substring); 

    } 

程序返回[email protected],誰能告訴我什麼是錯我的程序?

回答

9

目前,您正在打印對象而不是其內容。您可以在MyString2類中重寫toString()改變這種行爲:

@Override 
public String toString() { 
    return s; 
} 
+0

非常感謝,這工作就像一個魅力!我應該自己想過這個,但在練習描述中,toString()方法不在該類應包含的方法列表中。 – Esben86

+0

這可能是因爲它不是您自己實現的方法,而是,Java中的每個對象都是https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html的子類。包含'toString()','hashCode()'和'equals()'等方法,您可以使用自己的實現來覆蓋所有這些方法。 – nbokmans

相關問題