我必须在java中输出一个儒略历。我打印出每个月,但我不确定如何固定行长度对应于每个月。例如,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();
}
}
我们可以创建一个矩阵,每行有不同数量的列(称为锯齿矩阵),如下所示:
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...
现在,当我们需要遍历它时,记住要考虑到每一行都有不同的长度:
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++;
}
}
以上所有的工作是因为2D-matrix只是一个数组的数组,在Java中使用矩阵时请记住这一点。