问一个关于printf输出格式的问题

beingyourself 2008-02-24 02:24:49
源程序:
import java.util.*;
public class CalendarTest {
public static void main(String[] args)
{
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);

d.set(Calendar.DAY_OF_MONTH,1);
int week=d.get(Calendar.DAY_OF_WEEK);
System.out.println("SUN MON TUE WED THR FRI SAT");


for(int i=Calendar.SUNDAY;i<week;i++)
System.out.print(" ");
do
{
int day=d.get(Calendar.DAY_OF_MONTH);

System.out.printf("%3d",day);

if(day==today)
System.out.print("*");
else
System.out.print(" ");
if(week==Calendar.SATURDAY)
System.out.println();
d.add(Calendar.DAY_OF_MONTH,1);
week=d.get(Calendar.DAY_OF_WEEK);
}while(d.get(Calendar.MONTH)==month);
}

}
输出结果:
SUN MON TUE WED THR FRI SAT
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24* 25 26 27 28 29
我怎么把输出结果变为:
SUN MON TUE WED THR FRI SAT
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24* 25 26 27 28 29
就是让数字对应中间?
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-02-24
  • 打赏
  • 举报
回复
System.out.printf("%5d",day);
你可以指定每个数字的输出占用的宽度,%5d 就是5个位置的数字,不足的前面默认补空白
rain_night 2008-02-24
  • 打赏
  • 举报
回复
改的楼主的

public class CalendarTest1 {
public static void main(String[] args) {
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);

d.set(Calendar.DAY_OF_MONTH, 1);
int week = d.get(Calendar.DAY_OF_WEEK);
System.out.println("SUN\tMON\tTUE\tWED\tTHR\tFRI\tSAT");

for (int i = Calendar.SUNDAY; i < week; i++)
System.out.print("\t");
do {
int day = d.get(Calendar.DAY_OF_MONTH);

System.out.print(day+"\t");

if (day == today)
System.out.print("**");
else
// System.out.print(" ");
if (week == Calendar.SATURDAY)
System.out.println();
d.add(Calendar.DAY_OF_MONTH, 1);
week = d.get(Calendar.DAY_OF_WEEK);
} while (d.get(Calendar.MONTH) == month);
}
}
rain_night 2008-02-24
  • 打赏
  • 举报
回复
这是我写的,比较笨

package face;
import java.util.Calendar;
import java.util.GregorianCalendar;
class CalendarTest
{

public static void main(String[] args)
{
GregorianCalendar a=new GregorianCalendar();
int day=a.get(Calendar.DAY_OF_MONTH);
int month=a.get(Calendar.MONTH);
a.set(Calendar.DAY_OF_MONTH,1);
int weekday=a.get(Calendar.DAY_OF_WEEK);
System.out.println("本月的日历:");
System.out.println("日 一 二 三 四 五 六 ");
for(int i=Calendar.SUNDAY;i <weekday;i++)
{
System.out.print(" ");
}
do{
int today=a.get(Calendar.DAY_OF_MONTH);
System.out.printf("%2d",today);
if(day==today)
{
System.out.print("* ");
}
else
{
System.out.print(" ");
}
if(a.get(Calendar.DAY_OF_WEEK)==7)
{
System.out.println();
}
a.add(Calendar.DAY_OF_MONTH,1);
}while(a.get(Calendar.MONTH)==month);
System.out.println();
}
}


rain_night 2008-02-24
  • 打赏
  • 举报
回复
用\t把,不过就是空的有点大

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧