代码之家  ›  专栏  ›  技术社区  ›  clink

使用Java字符串。format()用于打印

  •  1
  • clink  · 技术社区  · 6 年前

    我是java新手,我编写了一段代码来打印特定范围内的闰年,对于输出,我想每行打印3个闰年,每年用逗号分隔。

    例如,从1999年到2045年,我想要的产出是:

    2000,2004,2008
    2012,2016,2020
    2024,2028,2032
    2036,2040,2044
    

    我已经编写了代码:

    for (int year = 1999; year<2045; year ++) {
                if (((year%4 == 0) && (year%100 !=0)) || (year%400==0)) {
                    System.out.println(String.format(format, year));   #issue here
                }
    }
    

    我对字符串格式如何通过字符串工作感到困惑。我计划在打印时使用的格式符号。非常感谢您的帮助。

    3 回复  |  直到 6 年前
        1
  •  1
  •   xingbin    6 年前

    如果没有一些条件陈述,这是无法实现的,最好这样做:

    for (int year = 1999; year < 2045; year++) {
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {         
            System.out.print(year);
            column++;
            if (column % 3 == 0) {
                System.out.println();
            } else {
                System.out.print(",");
            }
        }
    }
    
        2
  •  0
  •   RBH    6 年前

    一串format()大致接受第一个字符串参数,该参数是您想要的“布局”,说明符以%开头,表示变量类型(%s表示字符串,%d表示数字等),下一系列参数是实际数据-应在数量和顺序上与格式布局中的说明符数量相匹配:

        int[] years = new int[3];
        int i = 0;
        for (int year = 1999; year < 2045; year++) {
            if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
                years[i++] = year;
                if (i > 2) {
                    System.out.println(String.format("%d,%d,%d", years[0], years[1], years[2]));
                    i = 0;
                }
            }
        }
    
    2000,2004,2008
    2012,2016,2020
    2024,2028,2032
    2036,2040,2044
    

    一串不过,对于这种情况,format()感觉有些过头了。您可以(大致)在我的特定解决方案中完成相同的任务,而无需使用以下格式:

     System.out.println(Arrays.toString(years));
    

    除了在本例中使用的int数组周围还有方括号之外。

    [2000, 2004, 2008]
    [2012, 2016, 2020]
    [2024, 2028, 2032]
    [2036, 2040, 2044]
    
        3
  •  0
  •   Paras    6 年前

    您可以使用%tY作为年份的格式。它将以四位数格式化年份。

    String.format("%tY", year)
    

    以下是我尝试过的代码:

    import java.util.Calendar;
    
    public class MyClass {
        public static void main(String args[]) {
            int year;
              Calendar cal = Calendar.getInstance();
            for (year = 1999; year<2045; year ++) {
                if (((year%4 == 0) && (year%100 !=0)) || (year%400==0)) {
                    cal.set(year, 0, 0);
                    System.out.println(String.format("%1$tY", cal));   
                }
            }
        }
    }