在Gate
课程中,我的方法public List<Signal> inspect(List<Signal> inputs)
应包含feed()
,propagate()
和read()
的组合。这是我完成但却收到错误的唯一方法。请问smb请帮帮我这个方法?注意:propagate()
是抽象的,由Gate
类的子类覆盖。方法public List<Signal> inspect(List<Signal> inputs)
应合并feed()
,propagate()
和read()
。
import java.util。*;
public abstract class Gate implements Logic {
private List<Wire> inputs;
private Wire output;
private String name;
public Gate(String name, List<Wire> ins, Wire out)
{
this.name = name;
this.output = out;
if(ins.size() == 0 || ins.isEmpty())
throw new ExceptionLogicParameters(false, 1, 0);
else
this.inputs = ins;
}
@Override
public void feed(List<Signal> inSigs)
{
if(inSigs.size() != inputs.size())
throw new ExceptionLogicParameters(false, inputs.size(), inSigs.size());
else
{
for(int i = 0; i < inSigs.size(); i++)
{
inputs.get(i).setSignal(inSigs.get(i));
}
}
}
@Override
public void feed(String name)
{
if(!(this.name.equals(name)))
throw new ExceptionLogicMalformedSignal(name.charAt(0), "Invalid logic input");
else
{
Signal signalValue = Signal.fromString(name.charAt(0));
}
}
@Override
public List<Signal> read()
{
List<Signal> signals = new ArrayList<>();
signals.add(output.getSignal());
return signals;
}
@Override
public abstract boolean propagate();
@Override
public List<Signal> inspect(List<Signal> inputs)
{
List<Signal> allMethods = new ArrayList<>();
allMethods.add(this.feed(inputs));
allMethods.add(this.propagate());
allMethods.add(this.read());
}
@Override
public String toString()
{
return this.name+"( " + inputs.toString() + " | " + output.toString() + " )";
}
@Override
public boolean equals(Object other)
{
if(other instanceof Gate)
{
Gate someGate = (Gate)other;
return (this.inputs == someGate.inputs) && (this.output.equals(someGate.output)
&& (this.name.equals(someGate.name)));
}
else
return false;
}
}
答案 0 :(得分:1)
您的所有方法都没有返回类型。
当你这样做时
allMethods.add(this.feed(inputs));
allMethods.add(this.propagate());
allMethods.add(this.read());
它不会返回任何内容,因此没有任何内容添加到列表中会引发错误。
list
类signal
的{{1}}
List<Signal> allMethods = new ArrayList<>();
您需要将所有方法的返回类型更改为Signal
,以将其添加到列表中。就像您无法向Integer
添加List<String>
一样,除Signal
我不确定您的代码逻辑,是否可以更改返回类型,但是将所有方法返回类型更改为List<Signal>
应该可以正常工作。
此外,您还需要
的return语句Signal
如果方法不为void且返回类型应与函数类型相同,则必须始终public List<Signal> inspect(List<Signal> inputs)