Java 2D阵列以不同的间隔分配不同的值

时间:2014-11-02 00:59:09

标签: java arrays

如果我不清楚,我道歉。我是编程新手。所以我要说我有一个char[10][10]。我想间隔分配两个+字符,例如i[0][0]i[5][7]Y,其余有N。如果可能,我该怎么做?我一直试图弄清楚它超过6个小时。

4 个答案:

答案 0 :(得分:0)

这可以通过循环来完成。

for(int i = 0; i < 5; i++){
   for(int j = 0; j < 7; j++){
      i[i][j] = 'N';
   }
   for(int j = 7; j < 10; j++){
      i[i][j] = 'Y';
   }
}
for(int i = 5; i < 10; i++){
   for(int j = 0; j < 10; j++){
      i[i][j] = 'Y';
   }
}

答案 1 :(得分:0)

一种可能的解决方案是让一个'for'块通过行,另一个'for'块通过列。它可能像

char[] arr= {'Y','N'};
int counter = 0; // <- these are optional depending on what you choose below
for(int j=0;j<10;j++){
    for(int k=0;k<10;k++){
        // i[j][k]= here you should assign the value
        counter++;
    }
}

分配值的方式取决于您想要做什么。如果你想让它随机生成你可以做i[j][k]= arr[(int)(Math.random()*2)]之类的事情,或者如果你想让它在Y和N之间交替,你可以有一个计数器变量并指定i[j][k]= arr[counter%2]。如果你想将前半部分指定为'Y'而将另一半指定为'N'i[j][k]= (counter<=50)?'Y':'N';。你提出的具体案例是i[j][k]= (j<=5 && k<=7)?'Y':'N';这在很大程度上取决于你想做什么

答案 2 :(得分:0)

char[][] theArray = new char[10][10]
upToX = 5; // limit for rows
upToY = 7; // limit for columns

for(int i = 0; i < 10; i++ ){
   for(int j = 0; j< 10; j++ ){
      if((i+1)*(j+1) <= (upToX+1)*(upToY+1)){ 
         theArray[i][j] = 'Y';
      }
      else{
         theArray[i][j] = 'N';
      }
   }
}

答案 3 :(得分:-2)

尝试使用for-loops和if-else。由于您要查找是/否类型值,我在我的示例中使用了boolean类型

boolean[][] arr = new boolean[10][10];
for(int i = 0; i < arr.length; i++) {
    for(int j = 0; j < arr[i].length; j++) {
        if(i < 6 && j < 8) 
            arr[i][j] = true;
        else
            arr[i][j] = false;
    }
}