2015-11-14 56 views
-2

嗨,我的所有程序都包含一个2维数组,即时读取循环中的2个坐标,并检查数组中的那些坐标是否已被asterisc填满,如果这是真的,用默认值“ - ”使我的数组进入状态,如果在指定的位置没有星号,我想用星号填写,我不确定是否要正确的处理。Bidimentional Array

这是我的代码的一部分。 谢谢大家。

String[][] matrix = new String[5][5]; 
    String asterisc = "*"; 
    String defaultValue = "_"; 
    Scanner sc = new Scanner(System.in); 
    int a, b; 

    for (int i = 0; i < matrix.length; i++) { 

     for (int j = 0; j < matrix.length; j++) { 

      matrix[i][j] = defaultValue; 
     } 
    } 

    for (int i = 0; i < matrix.length; i++) { 

     for (int j = 0; j < matrix.length; j++) { 

      System.out.print(matrix[i][j] + "|"); 
     } 
     System.out.println(); 
    } 

    a = 0; 
    b = 0; 

    while (a >= 0 && b >= 0 && a < matrix.length && b < matrix.length) { 

     a = sc.nextInt(); 
     b = sc.nextInt(); 

     for (int i = 0; i < matrix.length; i++) { 

      for (int j = 0; j < matrix.length; j++) { 

       if (matrix[a][b].equals(asterisc)) { 

        matrix[i][j] = defaultValue; 

       } else { 

        matrix[a][b] = asterisc; 

       } 
      } 
     } 

    } 
+1

您是否尝试过验证/测试你的代码?你面临什么具体问题? –

回答

0

不幸的是,您的代码有很多错误。

另外你还没有解释你的算法试图做什么。

简单地说,为什么你用一个while循环星号设置为默认值,你可以做

for (int i = 0; i < matrix.length; i++) { 
    for (int j = 0; j < matrix[i].length; j++) { 

     if matrix[i][j].equals(asterisc){ 
      matrix[i][j]=defaultValue; 
     } 
    } 
    System.out.println(); 
} 

你为什么使用扫描仪?

为什么a和b初始化为零,但是需要大于零的循环?

你真的想重新初始化你的整个数组吗?每当(a,b)项是星号?

+0

嗨,我想要模仿我的程序是计算机屏幕上的像素,y想重复我的循环ultil其中一个坐标是否定的,如果发生这种情况y想完成,A和B是te cordinates y想读在循环中,如果这个坐标(AB)已经包含一个星号,如果你不想在(AB)位置设置星号,那么你想重新初始化该数组到默认值。 – Ricki

+0

嗨Ricki,我不确定我能否进一步帮助你,因为我不懂你的英文 - 抱歉! –

0

我想是不是true.Suppose你已经在终端上键入“6 6”,那么变量a = 6,且b = 6,它是比数组长度大,并且程序将抛出异​​常。我想你可能想要做的事都可以关注该代码:

while(true){ 
    a = sc.nextInt(); 
    b = sc.nextInt(); 
    if(a<0||a>matrix.length||b<0||b>matrix.lenght) 
     break; 
}