2016-01-27 88 views
-5

這個類有一個名爲Paraula的變量,當我爲它賦值時遇到了麻煩。聲明和分配變量

public Paraula() { 
lletres = new char[MAXIM]; 
llargaria = 0; 
} 

public static Paraula llegir() { 
Paraula nova = new Paraula(); 
botarBlancs(); 
while ((lletra != fiSequencia) && // No ha acabat la seqüència 
     (lletra != blanc)) { // Hi ha prou espai 
    nova.lletres[nova.llargaria++] = lletra; 
    lletra = leerCarTeclado(); 
} 
return nova; 
} 

public String toString() { 
String msg = ""; 
for (int idx = 0; idx < llargaria; idx++) { 
    msg += lletres[idx]; 
} 
return msg; 
} 

public boolean esIgualA(Paraula b) { 
boolean iguals = llargaria == b.llargaria; 
for (int idx = 0; (idx < llargaria) && iguals; idx++) { 
    iguals = lletres[idx] == b.lletres[idx]; 
} 
return iguals; 
} 

public static boolean iguals(Paraula a, Paraula b) { 
return a.esIgualA(b); 
} 

public boolean buida() { 
return llargaria == 0; 
} 

public static void botarBlancs() { 
while (lletra == blanc) { 
    lletra = leerCarTeclado(); 
} 
} 

public static void botarParaula() throws Exception { 
while ((lletra != '.') && (lletra != blanc)) { 
    lletra = leerCarTeclado(); 
} 
} 
static public char leerCarTeclado() { 
char res = '.'; 
if (frase != null) { 
    res = frase[indice++]; 
} 
return res; 
} 

我要聲明兩個Paraula變量稱爲:TIPO(使用方法llegir(),從字符序列讀取)和tipo1:

Paraula tipo; 
     tipo = Paraula.llegir(); 

       Paraula tipo1; 
       tipo1 = { 
       Paraula.lletres[0] = 't'; 
       Paraula.lletres[1]='1'; 
       Paraula.llargaria = 2; 
     } 

當我宣佈tipo1會報告非法啓動的表達。代碼有什麼問題?

謝謝!

回答

2

而不是寫以下哪個ID不是有效的Java的,

  Paraula tipo1; 
      tipo1 = { 
      Paraula.lletres[0] = 't'; 
      Paraula.lletres[1]='1'; 
      Paraula.llargaria = 2; 

也許你打算寫

  Paraula tipo1 = new Paraula(); 
      tipo1.lletres[0] = 't'; 
      tipo1.lletres[1]='1'; 
      tipo1.llargaria = 2; 

但是更清潔的方式來做到這一點將字符串傳遞給構造函數

Paraula tipo1 = new Paraula("t1"); 

如果你的構造函數是

public Paraula(String s) { 
    lletres = s.toCharArray(); 
    llargaria = lletres.length; 
} 
0

當我聲明tipo1它報告表達式的非法開始。代碼有什麼問題?

您編寫的代碼對java無效。試試這個方法:

Paraula tipo1 = new Paraula(); 
tipo1.lletres[0] = 't'; 
tipo1.lletres[1] = '1'; 
tipo1.llargaria = 2; 
+0

這並不能說明原來的問題是什麼,所以並不能幫助提問者避免在將來。 – JonK

+0

代碼無效,添加回答。 – kunpapa

0

你沒有正確初始化tipo1。要定義一個新的對象,您需要調用一個構造函數。 (tipo初始化好,但那也不是真的)。考慮一個構造函數,如:

public Paraula(char[] c, int i) { 
    lletres = c; 
    llargaria = i; 
} 

tipo1初始化

tipo1 = new Paraula(new char[]{'t','1'}, 2);