当前位置: 首页 > 知识库问答 >
问题:

java中数组的特定输出模式

农鸿达
2023-03-14

我已经想出了如何创建一个数组,其中的输出如下所示:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

如果用户输入4表示4x4阵列。我的问题是,我如何操作这段代码,让它按照这样的顺序输出数组

1 2 3 4

8 7 6 5

9 10 11 12

16 15 14 13

每隔一行都是“向后的”

`导入java。util。扫描仪;导入java。util。阵列;导入java。util。阵列;

公共类问题2{

public static void main(String[] args) {

//Title
    System.out.println("[----------------------]");
    System.out.println("[     Array Pattern    ]");
    System.out.println("[----------------------]");
    System.out.println("");
//declare scanner
    Scanner keyboard = new Scanner (System.in);

//Prompt user to enter a digit greater than or equal to 3
    System.out.println("How many rows/columns do you want your array to have? (Must be at least 3):");

//read user input
    int num = keyboard.nextInt();

//place constraints on int num so that if it is less than 3, the program does not execute
    while(num<3 )
    {
        System.out.println("Lets's try this again....");
        System.out.println("How many rows/colums do you want your array to have? (Must be at least 3):");
        num = keyboard.nextInt();   
    }

    //2D array with number of rows and columns entered by user
    int[][] array = new int [num][num];
    int inc=1;
    for(int i=0;i<array.length;i++)
        for(int j=0;j<array.length;j++)
              {
                 array[i][j]=inc;
                 inc++;
              }


    //replace all square brackets in array display & format into order 

            //replace all commas in array display


    String a = Arrays.toString(array);
    a = Arrays.deepToString(array).replace("], [", "\n").replaceAll("[\\[\\],]", "");
    System.out.println(a);`

共有2个答案

公孙智
2023-03-14

您可以做的是,在每隔一行上反转for循环的顺序,使其递减:

for(int i=0;i<array.length;i++)
{
    if(i%2 == 0){
        for(int j=0;j<array.length;j++)
        {
            array[i][j]=inc;
            inc++;
        }
    }
    else{
        for(int j=num-1;j>=0;j--)
        {
            array[i][j]=inc;
            inc++;
        }
    }
}

我真的不知道如何格式化列的方式,你写的代码(与Arrays.deepToString),但如果你相反地循环通过它手动你可以垫字符串:

String [][]stringConvertedTable= new String[num][num];

    for(int i=0; i<num; i++) {
        for(int j=0; j<num; j++) {
            stringConvertedTable[i][j]= Integer.toString(array[i][j]);
            System.out.print(stringConvertedTable[i][j] + "\t");
        }
        System.out.println("");
    }

但这不是最优雅的方式。。。

巫健柏
2023-03-14

这个循环将做到这一点:

int reverse = 0;   

for(int i=0;i<array.length;i++)
for(int j=0;j<array.length;j++)
      {
          if(i%2 == 0){
            if(j == 0){
                inc = reverse;
                if(i > 0 )inc = inc + num + 1;
            }
            array[i][j]=inc;
            inc++;  
          }
          else{
              if(j == 0)reverse = inc + num - 1;
              array[i][j]=reverse;
              reverse--;
          }
      }

每隔一行它将数字按降序排列。

此外,要打印带有标签的数字,请使用:

String a = Arrays.toString(array);
a = Arrays.deepToString(array).replace("], [", "\n").replace(", ", "\t").replaceAll("[\\[\\],]", "");
System.out.println(a);

这将阻止一张桌子形成对角线。

 类似资料:
  • 我应该创建一个由7个整数组成的数组,称为sevenInt。要求用户输入7个介于80和120之间的整数,并将每个数字存储到sevenInt中。如果用户没有输入正确的整数范围,请再次询问,直到用户正确输入。然后,在七位数中显示偶数。 我的代码在一定程度上有效。 1) 如果我输入了错误的整数范围 例如,输入80-120之间的7个整数:(系统提示) 79808182838485(用户输入) 请输入80-1

  • 所需输出: 我如何使用递归来完成这件事呢?我的代码思想是: 我对在if语句和system.out.println()中返回什么感到困惑,因为数字5不会随着它的停留而减少/增加例如,它将垂直停留5,我该如何处理这个问题呢?我的代码更多的是一个说明,只是为了证明我在做这件事。

  • 本文向大家介绍java 键盘输入一个数,输出数组中指定元素的示例,包括了java 键盘输入一个数,输出数组中指定元素的示例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 输出: 请输入数组下标: 5 你输入的是:5对应数组元素是:987 以上这篇java 键盘输入一个数,输出数组中指定元素的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我意识到在SO上也有类似的问题,但是它们并不能完全解决我的问题。 我想要一个给定Class对象的方法,该方法将在该Class(如果存在)上调用“ main”方法,即public static void main,并捕获该main方法的控制台输出。进行调用的类是非守护线程。 我已经有部分代码了,但是我不确定如何捕获控制台输出,最重要的是,如何仅捕获此特定线程的输出。这是我到目前为止的内容

  • 问题内容: 使用第三方API,我观察到以下内容。 而不是使用 它使用类似 我得到分配的“输出”字符串。 我很好奇实现这种功能的原因。使用此类输出参数的优点是什么? 问题答案: 在您的示例中有不对的地方。 在上面的程序中,将输出字符串“ foo”, 而不是 “ Hello World”。 某些类型是可变的,在这种情况下,您可以修改传递给函数的对象。对于不可变的类型(例如),您必须构建某种包装类,而可

  • 问题内容: 我正在将Kears与tensorflow一起使用,并且我有一个3输出的模型,我只想训练2个输出。 我尝试使用上面的代码来执行此操作,但是我不确定它是否可以执行我想要的操作。因此,我认为这会加总损失,并且会用该损失来训练每个输出,而我根本不希望进行训练。(我需要,因为它用于测试)。谁能告诉我如何实现这一目标或让我确信代码实际上满足了我的需求? 问题答案: 您必须创建2个这样的不同模型 您