在数组上使用length()

时间:2012-11-13 06:54:26

标签: java

需要创建一个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()
      {

3 个答案:

答案 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
}