java,判断数组内数值为1还是0~通过前三个数值,判断后面的,不显示结果~求教!

函数想得到的数组是r[5][l],l是长度是用户指定的,b是个[5][3]数组,是r的前三列。对于每一个r[][n]通过以下条件判断r的剩下数:inti1,如果r[][i... 函数想得到的数组是r[5][l],l是长度是用户指定的,b是个[5][3]数组,是r的前三列。对于每一个r[][n]通过以下条件判断r的剩下数:
int i
1,如果r[][i-1]="0"==>r[][i]="1"
2,如果r[][i-1]="1",r[][i-2]="0"==>r[][i]="1"
3,如果r[][i-1]="1",r[][i-2]="1",r[][i-3]="1"==>r[][i]="0"
剩下的情况都是“x”

比如说有个r[5][5]
我已知r[][0-2]=b[][0-2]
=1,0,1;
1,1,1;
0,0,1;
1,0,0;
1,1,0

我希望通过程序推出r[5][ 5]
结果应该是
1,0,1,1,x;
1,1,1,0,1;
0,0,1,1,x;
1,0,0,1,1;
1,1,0,1,1;

这是函数部分,思路是先把未知的都赋值为x,再通过前边的判断。
但结果一直是
1,0,1,x,x;
1,1,1,x,x;
0,0,1,x,x;
1,0,0,x,x;
1,1,0,x,x;
各位大神求解!!!!!!!!!!!!!!!!!

public String[][] getresult(String[][] b,int l){
//得到排班结果
String r[][]= new String[5][l+3];
for(int i=0;i<r.length;i++){
for (int j=0;j<r[i].length;j++){
r[i][j]="x";
}
}
for(int i=0;i<5;i++){
for (int j=0;j<3;j++){
r[i][j]=b[i][j];
}
}
for(int i=0;i<5;i++){
for(int j=3;j<r[i].length;j++){
if(r[i][j-1]=="0"){
r[i][j]="1";
}
if((r[i][j-1]=="1")&&(r[i][j-2]=="0")){
r[i][j]="1";
}
if((r[i][j-1]=="1")&&(r[i][j-2]=="1")&&(r[i][j-2]=="1")){
r[i][j]="0";
}
}
}
/*System.out.println("排班结果如下:");
for(int i=0;i<r.length;i++){
for (int j=0;j<r[i].length;j++){
System.out.print(r[i][j]+",");
}
System.out.print("\n");
}*/
return r;
}
展开
 我来答
anglewang98
推荐于2016-11-28 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:285万
展开全部
代码如下:
public class TestArray {

public static void main(String[] args){
TestArray ta = new TestArray();
int arrayLength = 5;
String arrayB[][] = {{"1","0","1"},{"1","1","1"},{"0","0","1"},{"1","0","0"},{"1","1","0"}};
String arrayA[][] = ta.getResult( arrayB, 2);
}

private String[][] getResult(String[][] arrayB, int l){
if(l<0) return null;
String arrayA[][] = new String[arrayB.length][arrayB[0].length+l];
for(int i=0; i<arrayA.length; i++){
for(int j=0; j<arrayA[0].length; j++){
if(j<3){
arrayA[i][j] = arrayB[i][j];
}else{
arrayA[i][j] = this.calculator(arrayA[i][j-3], arrayA[i][j-2], arrayA[i][j-1]);
}
System.out.print("["+arrayA[i][j]+"]");
if(j == arrayA[0].length -1){
System.out.println("|");
}else{
System.out.print(",");
}
}
}
return arrayA;
}

//用于根据数组前三位
private String calculator( String i, String j, String k){
String result = "x";

if("0".equals(k)||"0".equals(j)){
return "1";
}else if("1".equals(k)&&"1".equals(j)&&"1".equals(i)){
return "0";
}

return result;
}

}
输出结果:
[1],[0],[1],[1],[x]|
[1],[1],[1],[0],[1]|
[0],[0],[1],[1],[x]|
[1],[0],[0],[1],[1]|
[1],[1],[0],[1],[1]|
匿名用户
2014-01-14
展开全部
这么复杂.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友40d310f
2014-01-13 · 超过11用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:44.9万
展开全部
太长没看.......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式