Я хотел бы построить массив столбцов из этого массива, цель состоит в том, чтобы этот метод принимал неровные array
IE не квадратные или прямоугольные angular, как в моем примере кода является прямоугольным angular для пример. Как вы можете видеть из моих выходных данных, каждый 4-й индекс одного внутреннего массива равен нулю, хотя может показаться, что значение в то время, когда ему назначено, фактически равно правильному значению из массива продаж. В основном методе обратите внимание, что при выводе salesByColumn[2][4]
это значение равно 0.0
(это последняя запись в консоли). Если вы посмотрите в классе Sales, где используется метод для создания этого двумерного массива, то, когда он присваивает salesByColumn, он делает это, например, salesByColumn[ i ][ j ]
, поэтому вы можете определить, что при назначении этого индекса это i = 2
и j = 4
. Метод присваивает salesByColumn[2][4]
sales[4][2]
, что, если вы наблюдаете массив продаж sales[4][2] = 2391.0.
Внутри метода я также печатаю значение sales[4][2]
при вызове метода и, как вы можете видеть в верхней части его вывода оценивается как 2391.0.
Так почему же он присваивает ему 0.0, когда метод вызывается и повторяется? Спасибо за ваше время и внимание.
ГЛАВНЫЙ КЛАСС
public class Main {
public static void main(String[] args) {
double[][] salesByColumn = Sales.salesByColumn();
for(double[] column : salesByColumn) {
for(double sale : column) {
System.out.println(sale);
}
System.out.println();
}
System.out.println(salesByColumn[2][4]);
}
}
ПРОДАЖ КЛАСС
public class Sales {
static double[][] sales = {
{1540.0, 2010.0, 2450.0, 1845.0},
{1130.0, 1168.0, 1847.0, 1491.0},
{1580.0, 2305.0, 2710.0, 1284.0},
{1105.0, 4102.0, 2391.0, 1576.0},
{1105.0, 4102.0, 2391.0, 1576.0}
}
public static double[][] salesByColumn() {
int maxColumns = 0;
for(double[] row : sales) {
if(row.length > maxColumns) {
maxColumns = row.length;
}
}
System.out.println("Look here " + sales[4][2]);
double[][] salesByColumn = new double[maxColumns][];
for(int i = 0; i < maxColumns; i++) {
salesByColumn[i] = new double[(sales.length)];
for(int j = 0; j < sales[i].length; j++) {
salesByColumn[i][j] = sales[j][i];
}
}
return salesByColumn;
}
}
ВЫХОД
run:
Look here 2391.0
1540.0
1130.0
1580.0
1105.0
0.0
2010.0
1168.0
2305.0
4102.0
0.0
2450.0
1847.0
2710.0
2391.0
0.0
1845.0
1491.0
1284.0
1576.0
0.0
0.0
BUILD SUCCESSFUL (total time: 0 seconds)