需要创建一个int length()
方法,其中数组在方法之外。正在考虑做一个for循环for (int i = 0; i < array.length; i++)
...但我不确定请帮助。在API上它看起来很简单,但数组不在方法本身,所以idk怎么做。
public class MyString
{
private char[] array;
private int size;
private int max;
public MyString()
{
array = new char[25];
max = 25;
}
public void setString(String newString)
{
if(newString.length() > 25)
{
System.out.println("/nEnter a number equal or less than 25 " );
}
else
{
for(int i=0; i < newString.length(); i++)
{
array[i] = newString.charAt(i);
}
}
}
public String toString()
{
return new String(array);
}
public char charAt(int index)
{
return array[index];
}
public boolean contains(char ch)
{
for(char c: array)
{
if(c == ch) return true;
}
return false;
}
public int indexOf( char ch )
{
for (int i = 0; i < array.length; i++)
{
if (array[i] == ch)
{
return i; // Character found, return current index
}
}
return -1; // Character not found. Return -1
}
public int length()
{
答案 0 :(得分:1)
在您的示例array.length
中,总是会返回25。
如果您希望数组的长度为值,请使用:
public int length(){
int i = 0;
for (char c : array) {
if (c == '\u0000')
return i;
i++;
}
return array.length;
}
答案 1 :(得分:0)
我不确定我的问题是否完全正确,但是
public int length() {
return array.length;
}
应该这样做。 java中的数组有一个length
成员,其中包含数组长度。
请注意,这会返回Array length
,问题代码中的public MyString() {
array = new char[25];
max = 25;
size = 0;
}
public void setString(String newString) {
if(newString.length() > 25) {
System.out.println("/nEnter a number equal or less than 25 " );
} else {
size = newString.length();
for(int i = 0; i < size; i++) {
array[i] = newString.charAt(i);
}
}
}
public int length() {
return size;
}
始终为25。
如果你想要字符串长度,可以使用@Grisha中的方法,或使用代码中已有但尚未使用的size成员:
{{1}}
这样可以避免线性复杂的循环(length()为O(1)而不是O(n))。
答案 2 :(得分:0)
请参阅以下代码,它可以帮助您:
public int length()
{
if (array != null) {
return array.length;
}
return 0; // any default value which you want
}