[英]how can I make charAt method work with arrays in java?
can someone help me with this problem?有人可以帮我解决这个问题吗? i have to make method charAt to work but i dont know how..
我必须让方法 charAt 工作,但我不知道如何..
class AsciiCharSequence implements java.lang.CharSequence/* extends/implements */ {
// implementation
byte[] array;
public AsciiCharSequence(byte[] array) {
this.array = array.clone();
}
@Override
public int length() {
return array.length;
}
*@Override
public char charAt(int i) {
return (char) array.length(i);
}*
Try this:尝试这个:
@Override
public char charAt(int i) {
return (char) array[i];
}
Since you have an array and want to return the character at a particular array.由于您有一个数组并且想要返回特定数组中的字符。 In your question you are not returning a particular index value.
在您的问题中,您没有返回特定的索引值。
Use []
to access element in the array.使用
[]
访问数组中的元素。 But do not forget about throwing required exception, like it declared in CharSequence
documentation (if you access not correct element in an array, another type of exception will be thorwn).但是不要忘记抛出所需的异常,就像在
CharSequence
文档中声明的那样(如果您访问的数组中的元素不正确,则会抛出另一种类型的异常)。
public class AsciiCharSequence implements CharSequence {
private static final char[] EMPTY_ARRAY = new char[0];
private final char[] arr;
public AsciiCharSequence(char[] arr) {
this.arr = arr == null || arr.length == 0 ? EMPTY_ARRAY : Arrays.copyOf(arr, arr.length);
}
private AsciiCharSequence(char[] arr, int start, int end) {
this.arr = arr == null || arr.length == 0 || start == end ? EMPTY_ARRAY : Arrays.copyOfRange(arr, start, end);
}
@Override
public int length() {
return arr.length;
}
@Override
public char charAt(int i) {
if (i < 0 || i >= length())
throw new IndexOutOfBoundsException();
return arr[i];
}
@Override
public AsciiCharSequence subSequence(int start, int end) {
if (start < 0 || end < 0)
throw new IndexOutOfBoundsException();
if (end > length())
throw new IndexOutOfBoundsException();
if (start > end)
throw new IndexOutOfBoundsException();
return new AsciiCharSequence(arr, start, end);
}
@Override
public String toString() {
return IntStream.range(0, arr.length).mapToObj(i -> String.valueOf(arr[i])).collect(Collectors.joining());
}
}
For better understanding about character set can be refer below code from AbstractStringBuilder
为了更好地理解字符集,可以参考下面来自AbstractStringBuilder的代码
@Override
public char charAt(int index) {
checkIndex(index, count);
if (isLatin1()) {
return (char)(value[index] & 0xff);
}
return StringUTF16.charAt(value, index);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.