我正在尝试创建一个while循环作为数据解释器中的一个方法,它接受一个条件,当条件为true时,执行语句的主体,然后在条件不再为真时返回值。如果它没有执行,那么它返回0.我遇到的问题是我不知道如何让while循环执行语句的主体。以下是我到目前为止的情况,我需要在正确的方向上指出我在这里缺少的内容:
public class WhileStatement<b> extends Statement {
private final Expression condition;
private final Statement body;
/**
* @param c the condition for the while loop
* @param b the body of the loop
*/
public WhileStatement(Expression c, Statement b) {
this.body = b;
this.condition = c;
}
/**
* Interpret this statement, returning the resulting value.
*
* @param env the current environment
*
* @return The integer value from the statement that is the loop
* body when it is last executed, or IntegerValue 0 if the
* loop never executes.
*/
@Override
public IntegerValue interpret(Environment env) {
IntegerValue cond = condition.interpret(env);
IntegerValue bod = body.interpret(env);
while (cond.equals(true)) {
return bod;
}
return new IntegerValue(0);
}
感谢您的帮助。
答案 0 :(得分:0)
你应该更加努力地描述你的代码!
假设至少你知道你在做什么,我理解你的问题:
IntegerValue cond = condition.interpret(env);
IntegerValue bod = body.interpret(env);
IntegerValue result = new IntegerValue(0);
while (cond.equals(true)) {
// execute whatever you wanted here in whatever way you do it
result = bod;
}
return bod;