2017-04-05 115 views
-4

這是一個練習,我被要求編寫方法charAt()length()startsWith()並在main函數中調用這些方法。簡單的方法調用在java中不起作用

預期的輸出應該

ABCDE

的C 5

出於某種原因,我不知道,所以它不會打印出那些出去放和我無法請致電startsWith()方法。

問題(1)我不能調用方法startsWith()

問題(2)編譯時我註釋掉startsWith()但比

它只能打印的信不是索引和長度。

public interface CSequence { 
    char charAt(int n); 
    int length(); 
} 
class ImmutableCSequence implements CSequence { 
    private char[] chars; 
    public ImmutableCSequence(char[] chars) { 
     this.chars = new char[chars.length]; 
     for (int pos = 0; pos < chars.length; pos++) 
      this.chars[pos] = chars[pos]; 
    } 
    public boolean startsWith(char c) { 
     boolean b = false; 
     if (this.chars.length > 0 && c == this.chars[0]) 
      b = true; 
     return b; 
    } 
    public String toString() { 
     return new String(this.chars); 
    } 

    public char charAt(int n) { 
     for(int i = 0; i < chars.length; i++){ 
      i=(char) n; 
     } 
     return (char)n; 
    } 

    public int length() { 
     return this.chars.length; 
    } 
    public static void main(String[] args) { 
     char[] letters = {'a', 'b', 'c', 'd', 'e'}; 
     CSequence cs = new ImmutableCSequence(letters); 
     System.out.println(cs); 
     char c = cs.charAt(2); 
     int len = cs.length(); 
     System.out.println(c + " " + len); 
     //boolean b = cs.startsWith('a'); 
    } 
} 
+0

拿什麼'沒有作用,因爲它是supposed'? – Jens

+0

它的開頭有可能是拼寫錯誤? –

+0

startWith!= startsWith – luk2302

回答

1

參考csCSequence類型的,並且它只能 激活在接口CSequence方法(方法的charAt和長度)。 它不能激活方法startsWith

方法startWith可以通過參考ImmutableCSequence來激活。

public static void main(String[] args) { 
    char[] letters = {'a', 'b', 'c', 'd', 'e'}; 
    CSequence cs = new ImmutableCSequence(letters); 
    ImmutableCSequence ck = new ImmutableCSequence(letters); 
    System.out.println(cs); 
    char c = cs.charAt(2); 
    int len = cs.length(); 
    System.out.println(c + " " + len); 
    boolean b = ck.startsWith('a'); 

您可以簡化您的charAt()這樣

public char charAt(int n){ 
return this.chars[n]; 

}