你能在java中的方法开始时指定使用哪个变量吗?

我很想稍微缩短一下这段代码,并可能使其更容易为我的老师所阅读。问题是我不知道我是否可以做这样的事情。这是带有示例的代码:


if((polelode1[x][y] || polelode1[x][y + 1] || polelode1[x][y + 2] || polelode1[x - 1][y + 1] || polelode1[x - 1][y + 2] || polelode1[x][y + 3])!= true){ //kontrola kolize

    polelode1[x][y] = true;

    polelode1[x][y + 1] = true;

    polelode1[x][y + 2] = true;

    polelode1[x - 1][y + 1] = true;

    polelode1[x - 1][y + 2] = true;

    polelode1[x][y + 3] = true;

    pocetparniku = pocetparniku + 1;

}

else {

    System.out.println("can't create boat on another boat!");

    drawAim();

}


if((polelode2[x][y] || polelode2[x][y + 1] || polelode2[x][y + 2] || polelode2[x - 1][y + 1] || polelode2[x - 1][y + 2] || polelode2[x][y + 3])!= true){ //kontrola kolize

    polelode2[x][y] = true;

    polelode2[x][y + 1] = true;

    polelode2[x][y + 2] = true;

    polelode2[x - 1][y + 1] = true;

    polelode2[x - 1][y + 2] = true;

    polelode2[x][y + 3] = true;

}

问题是polelode1orpolelode2布尔字段,我希望它能像这样工作:


if((p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3])!= true){ 

    p[x][y] = true;

    p[x][y + 1] = true;

    p[x][y + 2] = true;

    p[x - 1][y + 1] = true;

    p[x - 1][y + 2] = true;

    p[x][y + 3] = true;

}

而不是p使用polelode1或polelode2.

那可能吗?任何帮助表示赞赏。


慕容3067478
浏览 131回答 3
3回答

侃侃无极

你可以做几件事。就像循环两个polelode1、polelode2一样。for(bool[][] p: Arrays.asList(polelode1, polelode2)){    if((p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3])!= true){         p[x][y] = true;        p[x][y + 1] = true;        p[x][y + 2] = true;        p[x - 1][y + 1] = true;        p[x - 1][y + 2] = true;        p[x][y + 3] = true;    }}你可以制定一个方法。static void process(bool[][] p){    // repeat code with p.}然后你就可以调用这个方法了。process(polelode1);process(polelode2);您可以使用流。

慕少森

您可以创建其他方法并调用它;例如 :public boolean fct1(boolean[][] p){    return !(p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3]);}public void fct2(boolean[][] p){        p[x][y] = true;        p[x][y + 1] = true;        p[x][y + 2] = true;        p[x - 1][y + 1] = true;        p[x - 1][y + 2] = true;        p[x][y + 3] = true;}进而if(fct1(polelode1)){ //kontrola kolize        fct2(polelode1);        pocetparniku = pocetparniku + 1;        }        else {           System.out.println("can't create boat on another boat!");           drawAim();        }        if(fct1(polelode2)){ //kontrola kolize        fct2(polelode2);}

白衣染霜花

好的,我发现您可以创建一个空布尔字段,并且可以复制另一个字段的值。这是迄今为止我最好的解决方案:if (player == true) {        p = polelode1;      }  else {        p = polelode2;    }    if((p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3])!= true){         p[x][y] = true;        p[x][y + 1] = true;        p[x][y + 2] = true;        p[x - 1][y + 1] = true;        p[x - 1][y + 2] = true;        p[x][y + 3] = true;    }进行了一些测试,发现了困难的方法。无论如何谢谢大家!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java