具有不同行长度的数组



我必须在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中使用矩阵时请记住这一点。

相关内容

  • 没有找到相关文章

最新更新