我有一个问题,我的if条件没有正确触发,我不知道为什么。
这是调用ModelField
的函数:
public void squareMaker(){
for (int i = 0; i<=_model.getSizeofgame()-1; i++){
_squares.add(new JButton());
_model.Modelfield(i, 'u');
_squares.elementAt(i).setBorder(_border);
_squares.elementAt(i).setActionCommand("" +i);
_squares.elementAt(i).addActionListener(_controller);
this.add(_squares.get(i));
System.out.println("Square in gamepanel " + i);
}
}
模型中的实际功能:
public void Modelfield(int pos, char symb){
int position=pos+1;
System.out.println("Adding square in model "+position +" boardsize "+boardsize);
if((position%boardsize)==0){
System.out.println("Right edge "+position);
if(position<=Boardwidth){
modelVector.elementAt(position).redge=true;
System.out.println("Top and Right edge ");
}
else{
System.out.println("Not top edge");
}
}
else {
}
modelVector.addElement(new Fieldpiece(position,symb));
}
所以应该发生的事情是,当我从squareMaker调用Modelfield时,它永远不会超过
if((position%boardsize)==0)
有没有人知道为什么?
答案 0 :(得分:1)
一般来说,如果声明:
if((position%boardsize)==0){
不会触发,因为position % boardsize
不等于零。
找出为什么是基本调试101:如果代码没有按您认为的那样行事,则输出影响代码的所有信息。< / p>
例如,在if
语句之前插入以下行:
System.out.println ("=====");
System.out.println ("position = " + position);
System.out.println ("boardsize = " + boardsize);
System.out.println ("modulo = " + position % boardsize);
System.out.println ("=====");
然后检查输出,这应该有希望告诉你完全问题是什么(如果你不想检查生成的输出,你也可以通过调试器运行/步骤代码通过这种方法)。
如果您已经拥有代码,您认为输出足够的信息进行调试,则应检查 (如果您需要我们的帮助,请向我们显示输出)。在这种情况下,它包含以:
开头的输出行Adding square in model
答案 1 :(得分:0)
我不是专家,但我的猜测是,当position%boardsize
执行时,它不会== 0
。我会检查以确保position
和boardsize
的值反映您的期望并从那里排除故障。