Java 垂直写入数组的整数
我知道这可能很简单,但我似乎真的不明白如何垂直写入整数。例如,有一个数组有4个整数,分别是9、21、63和501,结果如下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
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();