这个代码有什么错误package sheji1; import java.util.List; import java.util.ArrayList; public class StateManager { List<StateMemento> jsji=new ArrayList<StateMemento>(); public void cunqi(StateMemento sm) { jsji.add(new StateMemento(sm.getX(),sm.getY(),sm.getJs())); } public StateMemento huiqi(int num)throws ArrayIndexOutOfBoundsException { System.out.println("总共走的步数为"+jsji.size()); if(num>jsji.size()) System.out.println("您未执行这么多次棋"); else { for(int i=(jsji.size())-1;i>=(jsji.size())-num;i--) { jsji.remove(i); } return jsji.get(jsji.size()-num-1); } return null; } public void bianli() { System.out.println("遍历所有走过的不熟:"); for(StateMemento list: jsji) { System.out.println(list.getJs()+" "+list.getX()+" "+list.getY()); } } }
时间: 2023-08-02 17:11:26 浏览: 148
这段代码有几个错误:
1. `package sheji1;` 这行代码应该放在文件的第一行,且应该是小写的 `package sheji1;`,而不是 `package Sheji1;`。
2. `List<StateMemento> jsji=new ArrayList<StateMemento>();` 这行代码中 `jsji` 变量的命名不规范,应该改为 `stateMementos` 或者 `stateList` 等更加明确的名称。
3. `public StateMemento huiqi(int num)throws ArrayIndexOutOfBoundsException { ... }` 方法中的 `return null;` 是不必要的,因为在方法的结尾已经有一个默认返回值了。
4. 在 `huiqi` 方法中,如果 `num` 大于 `jsji.size()`,应该抛出 `ArrayIndexOutOfBoundsException` 异常,而不是只输出一条提示信息。
5. 在 `huiqi` 方法中,`jsji.get(jsji.size()-num-1)` 的返回值是错误的,应该返回 `jsji.get(jsji.size()-num)`。
6. 在 `bianli` 方法中,`System.out.println("遍历所有走过的不熟:");` 的输出语句中,“不熟”应该改为“步数”。
修改后的代码如下所示:
```java
package sheji1;
import java.util.List;
import java.util.ArrayList;
public class StateManager {
private List<StateMemento> stateMementos = new ArrayList<StateMemento>();
public void cunqi(StateMemento sm) {
stateMementos.add(new StateMemento(sm.getX(), sm.getY(), sm.getJs()));
}
public StateMemento huiqi(int num) throws ArrayIndexOutOfBoundsException {
System.out.println("总共走的步数为" + stateMementos.size());
if (num > stateMementos.size()) {
throw new ArrayIndexOutOfBoundsException("您未执行这么多次棋");
} else {
for (int i = stateMementos.size() - 1; i >= stateMementos.size() - num; i--) {
stateMementos.remove(i);
}
return stateMementos.get(stateMementos.size() - num);
}
}
public void bianli() {
System.out.println("遍历所有走过的步数:");
for (StateMemento list : stateMementos) {
System.out.println(list.getJs() + " " + list.getX() + " " + list.getY());
}
}
}
```
阅读全文