我正在編寫一個類的程序。當我運行程序時,字母表的值永遠不會粘住,當我在我的子類中使用toString()時,字母總是爲空。我知道在第二個構造函數中,this.alphabet等於我想要它相等但在此之後它失去了它的價值。奇怪的部分是machineName保持它的價值。我對java和stackoverflow仍然很陌生,所以我很抱歉如果我做了一些虛無的事情。此外,我不能改變我只能實現它的方法或變量。Java中抽象類的問題
public abstract class AbstractDFA{
private String machineName;
private String alphabet;
public AbstractDFA(String nameofmachine)
{
StringBuilder b = new StringBuilder();
for (int i = 0; nameofmachine.charAt(i) != '.'; i++)
{
b.append(nameofmachine.charAt(i));
}
machineName = b.toString();
}
public AbstractDFA(String nameofmachine, String alphabet)
{
this.alphabet = alphabet;
this.machineName = nameofmachine;
setAlphabet(this.alphabet);
}
public String toString()
{
return "Machine Name: " + machineName + "\nAlphabet: " + getAlphabet();;
}
public void setAlphabet(String alpha)
{
StringBuilder beta = new StringBuilder();
beta.append("{");
for (int i = 0; i < alpha.length(); i++)
{
beta.append(alpha.charAt(i));
if (i != (alpha.length() - 1))
{
beta.append(", ");
}
}
beta.append("}");
alphabet = beta.toString();
}
public String getAlphabet()
{
return alphabet;
}
}
公共類DFA擴展AbstractDFA {
public DFA(String fileName){
super(fileName);
readDFA(fileName);
}
public DFA(String name, String alpha, int numStates, int start, int[][] delta, boolean[] finalstates){
super(name,alpha);
this.numberOfStates = numStates;
this.start = start;
this.delta = delta;
this.finalStates = finalstates;
}
}
這是一個抽象類。子類中是否有代碼可能影響您所看到的內容?例如你的一個子類重寫'setAlphabet'? – 2013-04-07 16:37:51
據我所知並不如此。我編輯了代碼以包含來自子類的構造函數。我使用super.getAlphabet()時以及使用super.toString()打印出名稱和字母表時,只有其他時間訪問抽象類。 – 2013-04-07 16:49:36