为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2023-10-13 15:17:01
我很想稍微缩短一下这段代码,并可能使其更容易为我的老师所阅读。问题是我不知道我是否可以做这样的事情。这是带有示例的代码: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.那可能吗?任何帮助表示赞赏。
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

你可以做几件事。就像循环两个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);

您可以使用流。


查看完整回答
反对 回复 2023-10-13
?
慕少森

TA贡献2019条经验 获得超9个赞

您可以创建其他方法并调用它;例如 :


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);

}


查看完整回答
反对 回复 2023-10-13
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

好的,我发现您可以创建一个空布尔字段,并且可以复制另一个字段的值。这是迄今为止我最好的解决方案:


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;

    }

进行了一些测试,发现了困难的方法。无论如何谢谢大家!


查看完整回答
反对 回复 2023-10-13
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信