Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您能在java中指定在方法开始时使用哪个变量吗?_Java - Fatal编程技术网

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

您能在java中指定在方法开始时使用哪个变量吗?,java,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]=真; polelode1[x][y+1]=真; polelode1[x]

我想把这段代码缩短一点,可能让我的老师更容易阅读。问题是我不知道我是否能做这样的事情。下面是一个示例代码:

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]=真;
polelode1[x][y+1]=真;
polelode1[x][y+2]=真;
polelode1[x-1][y+1]=真;
polelode1[x-1][y+2]=真;
polelode1[x][y+3]=真;
pocetparniku=pocetparniku+1;
}
否则{
System.out.println(“无法在另一条船上创建船!”);
drawAim();
}
如果((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]=真;
polelode2[x][y+1]=真;
polelode2[x][y+2]=真;
polelode2[x-1][y+1]=真;
polelode2[x-1][y+2]=真;
polelode2[x][y+3]=真;
}
问题是
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]=真;
p[x][y+1]=真;
p[x][y+2]=真;
p[x-1][y+1]=真;
p[x-1][y+2]=真;
p[x][y+3]=真;
}
不要使用
p
而使用
polelode1
polelode2


可能吗?非常感谢您的帮助。

您可以做几件事。就像两个极点上的环1,极点2

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

做了一些测试,找到了艰难的道路。无论如何,谢谢大家

哦,这就是我一直在寻找的东西!只要稍微调整一下就可以了!谢谢这是一个有趣的一个肯定,我一定要尝试这个!谢谢你,马特