2012-11-13 164 views
0

上需要創建一個方法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

這是家庭作業?如果是的話,請添加一個標籤吧'homework' –

+2

@FahimParkar號,[家庭作業標籤已被棄用(http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially不贊成) –

+0

@Andreas:哦...謝謝你的分享。我知道沒有意識到。另外我不明白,當TAG被棄用時,爲什麼它仍然存在於SO? –

回答

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

這將避免與線性複雜的循環(長度()將是O(1)而不是O(n))。

+0

哇是嗎?我認爲這將是更多的工作。但幾乎只需要獲得數組長度 – javip

+0

**需要創建一個int length()**。我認爲OP想創建長度方法,而不是使用默認方法。 –

+1

哦.. OP想要你說的。 –

0

請參見下面的代碼可能它可以幫助你:

public int length() 
{ 
    if (array != null) { 
     return array.length; 
    } 
    return 0; // any default value which you want 
} 
1

在您的例子array.length總是會回到25 如果你想數組與值長,用途:

public int length(){ 
     int i = 0; 
     for (char c : array) {    
      if (c == '\u0000') 
       return i; 
      i++;   
     } 
     return array.length; 
    }