根据条件打印二维数组

时间:2019-11-21 06:50:08

标签: java

我有一种方法应该编写2D int数组(如矩阵)并添加?在特定位置上(您可以获取该位置的尺寸作为参数)。

是的,我写int是因为在值为0的情况下,我应该写A,在值为1 B的情况下,等等……

示例:

A  B  C
B  A? A

它们之间应为\ t,但不应位于行中的第一个元素之前,也不应位于最后一个元素之后。 最简单的方法是什么?我知道如果编写多个If ... if else条件,我可以得到此信息,但我想知道是否有较短的代码。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则您有一个2D数组,并且获得了一些int值,在打印时应将其替换为字符。

您可以采取的解决方案之一是使用开关盒来创建另一个功能,如下所示:

<input type="text" class="gold" name="second" id="second" placeholder="<?PHP echo $rate_1;>"style="width:150px;text-align: right;"onchange="multiply(this)">

然后在打印时调用此函数:

       private String charOf(int x, int colIndex, int maxCols){
            Char char = '';
            switch(int){
                     case 1: 
                             char = 'A';
                             break;
                     case 2:
                             char = 'B';
                             break;
                     ....... etc
             }
          return (colIndex < maxCols-1 ? char+"\t" : char);
       }

对于问号,我认为内部循环中的一个if语句可以做到这一点,或者您可以在一行中使用它:

        print (charOf(arr[i][j]);

假定x和y是您用来指定要在旁边打印问号的元素的两个参数。

答案 1 :(得分:1)

初始化数组后 例如

int[][] array = new int[2][3];
     array[0][0] = 1;
     array[0][1] = 2;
     array[0][2] = 3;
     array[1][0] = 1;
     array[1][1] = 4;
     array[1][2] = 5;

您可以使用ASCII码

for(int i=0;i<array.length;i++){
     for(int j=0;j<array[i].length;j++){
         int myasci = 65 + array[i][j];
         String MyChar = (char) myasci+"";
         if(/* Your ? conditon */){
            MyChar = MyChar+"?";
         }
         System.out.print(MyChar+'\t');
     }
     System.out.println();
 }

大写字母的ASCII码从65表示'A'开始66表示'B' 因此您可以将int的值添加到65以获取数字的Ascii代码,例如,当int为0时,它将是65 + 0 = 65,这是'A'ASCII代码