无法理解如何模拟String.substring方法

时间:2015-05-21 00:38:54

标签: java arrays exception char substring

我必须创建一个自定义类MyString,它模拟String类包含的某些方法,基本上就像一个字符串。唯一的问题是,我不能在字符串类中使用任何东西,只能在一个方法中使用构造函数。

我遇到的问题是让substring方法正常工作。我一直得到arrayoutofbound异常。我也不确定如何比较两个MyString对象。

  package hw;
import java.lang.reflect.Array;
import java.util.Scanner;
import java.util.Arrays;

public class MyString {

    private final char[] chars;
    private final int index;
    Scanner sc = new Scanner(System.in);


    public MyString(char[] chars) {
        this.chars = chars;
        this.index = Array.getLength(chars);
    }


    //this is my trouble method
    public MyString substring(int begin, int end) throws Exception{
        char[] t = {};
        int n = 0;

        if(end > index){
            throw new Exception();
        }
        if(begin < 0){
            throw new Exception();
        }
        if(begin > end){
            throw new Exception();
        }

        for(int i=begin-1;i < end;i++){
            t[n] = this.chars[i];
            n++;
            System.out.print(t[n]);
        }
        System.out.println(t);
        MyString myTemp = new MyString(t);
        return myTemp;
    }


    //im not sure how to compare the two
    public boolean equals(MyString s){
        char [] tempA = this.chars;
        char [] tempB = s.chars;
        return true;
    }


    /*
    public static MyString valueOf(int i){
        Mystring string;
        return MyString;
    }
    */

}

1 个答案:

答案 0 :(得分:2)

substring方法中,t被创建为长度为0(char[] t = {};)的空数组。只需更改此声明以匹配结果字符串char[] t = new char[end - begin];的大小(如果结尾是独占的)。