0

需要创建一个int length()方法,其中数组在方法之外。正在考虑做一个for循环for (int i = 0; i < array.length; i++)......但我不确定请帮忙。在 API 上看起来很简单,但数组不在方法本身中,所以不知道该怎么做。

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()
      {
4

3 回答 3

1

在您的示例array.length中,总是会返回 25。如果您想要带有值的数组长度,请使用:

  public int length(){
       int i = 0;
       for (char c : array) {               
           if (c == '\u0000')
               return i;  
           i++;         
       }
       return array.length;
  }
于 2012-11-13T07:08:41.470 回答
0

我不确定我是否完全正确地回答了您的问题,但是

public int length() {
   return array.length;
}

应该这样做。java中的数组有一个length包含数组长度的成员。

请注意,这将返回Array length问题代码中的 which 始终为 25。

如果您想要字符串长度,请使用@Grisha 中的方法,或者使用代码中已经存在但尚未使用的 size 成员:

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;
}

这将避免具有线性复杂度的循环(length() 将是 O(1) 而不是 O(n))。

于 2012-11-13T06:58:41.733 回答
0

请参阅以下代码可能对您有所帮助:

public int length()
{
    if (array != null) {
        return  array.length;
    }
    return 0; // any default value which you want
}
于 2012-11-13T07:05:49.810 回答