我必须创建一个自定义类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;
}
*/
}
答案 0 :(得分:2)
在substring
方法中,t
被创建为长度为0(char[] t = {};
)的空数组。只需更改此声明以匹配结果字符串char[] t = new char[end - begin];
的大小(如果结尾是独占的)。