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これにより、質問のコードで常に25になることに注意してください。

文字列の長さが必要な場合は、@ Grishaのアプローチを使用するか、コードにすでに含まれているがまだ使用されていないサイズメンバーを使用します。

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(n)ではなくO(1)になります)。

于 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 に答える