ell*_*er7 2 java multidimensional-array
我必须在java中输出Julian日历.我每个月都打印出来,但是我不确定如何确定每个月对应的行长度.例如,2月,4月,6月,9月和11月没有31天.到目前为止这是我的代码:
import java.text.DateFormatSymbols;
public class testing {
public void Day() {
System.out.println();
for (int i = 1; i <= 31; i++) {
System.out.println(String.format("%2s", i));
}
}
public void MonthNames() {
String[] months = new DateFormatSymbols().getShortMonths();
for (int i = 0; i < months.length; i++) {
String month = months[i];
System.out.printf(month + " ");
//System.out.printf("\t");
}
}
public void ColRow() {
int dayNum365 = 1;
int array [][] = new int[31][12];
System.out.println();
for (int col = 0; col < 12; col++) {
for (int row = 0; row < 31; row++) {
array[row][col] += (dayNum365);
dayNum365++;
}
}
for (int col = 0; col < array.length; col++) {
for (int row = 0; row < array[col].length; row++) {
System.out.printf("%03d", array[col][row]);
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String[] args) {
testing calendar = new testing();
calendar.MonthNames();
calendar.ColRow();
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以创建一个矩阵,每行有不同数量的列(称为锯齿状矩阵),如下所示:
int[][] months = new int[12][];
months[0] = new int[31]; // January
months[1] = new int[28]; // February, assuming a non-leap year
months[2] = new int[31]; // March
// and so on...
Run Code Online (Sandbox Code Playgroud)
现在,每当我们需要迭代它时,请记住考虑每行的长度不同:
int dayNum365 = 1;
for (int month = 0; month < months.length; month++) {
for (int day = 0; day < months[month].length; day++) {
months[month][day] = dayNum365;
dayNum365++;
}
}
Run Code Online (Sandbox Code Playgroud)
所有上述工作都是因为2D矩阵只是一个数组数组,在使用Java中的矩阵时要记住这一点.