Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 垂直写入数组的整数_Java_Arrays_Integer - Fatal编程技术网

Java 垂直写入数组的整数

Java 垂直写入数组的整数,java,arrays,integer,Java,Arrays,Integer,我知道这可能很简单,但我似乎真的不明白如何垂直写入整数。例如,有一个数组有4个整数,分别是9、21、63和501,结果如下 9 2 5 6 1 0 3 1 这是我程序中的一小步,可能是最简单的一步,但我不知道怎么做:( 有人能帮我或指导我完成我的程序吗?试试这个伪代码 int[] list = new int[] {9,21,63,501}; bool finished = false; if (list.Count > 0

我知道这可能很简单,但我似乎真的不明白如何垂直写入整数。例如,有一个数组有4个整数,分别是9、21、63和501,结果如下

     9  2  5  6
        1  0  3
           1  
这是我程序中的一小步,可能是最简单的一步,但我不知道怎么做:( 有人能帮我或指导我完成我的程序吗?

试试这个伪代码

int[] list = new int[] {9,21,63,501};
bool finished = false;

if (list.Count > 0) {

   for (var j=0;!finshed; j++) {
      finished = true;

      for (var i = 0; i<list.Count;i++) {
         String val = list[i].ToString();
         if (val.length>j) {
            write(val.charAt(j));
            finished = false;
         }
      }
   }
}
int[]list=newint[]{9,21,63501};
bool finished=false;
如果(list.Count>0){
对于(var j=0;!finshed;j++){
完成=正确;
对于(变量i=0;ij){
写(val.charAt(j));
完成=错误;
}
}
}
}

我创建了一个非常模块化且易于遵循的解决方案

编辑:将
数字索引()转换为纯数值计算。
保留原件并将其称为
digitAtStrIndex()

公共类整数列{
公共整数列(){
int[]arr=新的int[]{9,21,501,63};
打印列主订单(arr);
}
公共静态void main(字符串[]args){
新的整数列();
}
//---------主要功能--------------------------
//打印出一个整数数组,每个整数在一个垂直列中
public void printColumnMajorOrder(int[]arr){
int cols=arr.length;
整数行=最大位数(arr);
对于(int r=0;r=0?整数.toString(d):”);
}
System.out.println();
}
}
//返回整数的长度
公共整数numDigits(整数i){
如果(i0?(int)(num/pow)%10:-1;
}
//返回数组中最长整数的位数
公共整数最大位数(整数[]arr){
int max=0;
用于(int i:arr){
int size=numDigits(i);
如果(尺寸>最大值)最大值=尺寸;
}
返回最大值;
}
//-------------------------额外功能---------------------------
//整数和子字符串的混合-字符串操作=慢
公共整数数字索引(整数编号,整数i){
字符串n=整数。toString(数字);
返回n.length()>i?Integer.parseInt(n.substring(i,i+1)):-1;
}
//垂直打印数字的数字
public void printNumberVertical(int num){
对于(int i=0;i
`公共类垂直打印服务{

private int[] data;

public VerticalPrintService( int[] intArray ) {

    this.data = intArray;

}

public void printVertically(){
    int cols = data.length; // # of columns
    int rows = getRows(); // # of rows

    System.out.println("cols: " + cols);
    System.out.println("rows: " + rows);

    String[][] matrix = new String[rows][cols];
    int rowIndex = 0;
    int colIndex = 0;

    // populate 2d array
    for ( int i : data ) {
        String str = String.valueOf(i);
        for ( int j = 0; j < str.length(); j++ ) {
            matrix[rowIndex][colIndex] = String.valueOf(str.charAt(j));
            rowIndex++;
        }

        colIndex++;
        rowIndex = 0;
    }

    // print
    for ( int i = 0; i < rows; i++ ) {
        for ( int j = 0; j < cols; j++ ) {
            if ( null == matrix[i][j] ) {
                System.out.print("\t");
            } else {
                System.out.print( matrix[i][j] + "\t" );
            }
        }
        System.out.println();
    }
}

private int getRows(){

    int max = 0;
    for ( int i : data ) {
        int len = String.valueOf(i).length();
        if ( len > max ) {
            max = len;
        }
    }

    return max;
}

}`

为什么文本和示例之间的顺序不同?这不一定容易,但应该可行,尝试一下,如果您有问题,请回到这里。我在写下面的内容时,意识到它可能不会做我希望它做的事情…为了(k=0;k
private int[] data;

public VerticalPrintService( int[] intArray ) {

    this.data = intArray;

}

public void printVertically(){
    int cols = data.length; // # of columns
    int rows = getRows(); // # of rows

    System.out.println("cols: " + cols);
    System.out.println("rows: " + rows);

    String[][] matrix = new String[rows][cols];
    int rowIndex = 0;
    int colIndex = 0;

    // populate 2d array
    for ( int i : data ) {
        String str = String.valueOf(i);
        for ( int j = 0; j < str.length(); j++ ) {
            matrix[rowIndex][colIndex] = String.valueOf(str.charAt(j));
            rowIndex++;
        }

        colIndex++;
        rowIndex = 0;
    }

    // print
    for ( int i = 0; i < rows; i++ ) {
        for ( int j = 0; j < cols; j++ ) {
            if ( null == matrix[i][j] ) {
                System.out.print("\t");
            } else {
                System.out.print( matrix[i][j] + "\t" );
            }
        }
        System.out.println();
    }
}

private int getRows(){

    int max = 0;
    for ( int i : data ) {
        int len = String.valueOf(i).length();
        if ( len > max ) {
            max = len;
        }
    }

    return max;
}
int[] array = { 9, 53, 501, 90 };
VerticalPrintService vps = new VerticalPrintService(array);
vps.printVertically();