import java.util.Calendar;
成都创新互联公司是一家专业提供镜湖企业网站建设,专注与成都网站建设、做网站、H5网站设计、小程序制作等业务。10年已为镜湖众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
//这是问题(1)的函数
public static Boolean isLegal(int year,int month,int day){
boolean run=false;
if(month1||month12||day1||day31) return false;
if((year%4==0)(year%100!=0)||(year%400==0)) //是否是闰年
run=true;
switch(month){
case 2:
if(run){
if(day29) return false;
}
else{
if(day28) return false;
}
break;
case 4:
case 6:
case 9:
case 11:if(day30) return false;
}
return true;
}
//这是第(2)问的代码
Calendar cld = Calendar.getInstance();
cld.set(2009, 0,18);//月份是从0开始的
cld.set(Calendar.DAY_OF_YEAR, cld.get(Calendar.DAY_OF_YEAR)+365);
System.out.println(cld.getTime());
//结果是:Mon Jan 18 13:50:40 CST 2010
//下面是第三问的代码
Calendar cld1 = Calendar.getInstance();
cld1.set(2009, 0,18);//月份是从0开始的
Calendar cld2 = Calendar.getInstance();
cld2.set(2008, 0,18);
long d=cld1.getTimeInMillis()-cld2.getTimeInMillis();
d=d/1000/60/60/24;
System.out.println(d);
//结果是366
代码如下
public class Test {
//输入年份判断是否为闰年
public static void main(String[] args) {
int year;
System.out.println("请输入年份:");
Scanner sc=new Scanner(System.in);
year=sc.nextInt();
if(year%4==0year%100!=0||year%400==0) {
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
}
public class Animal implements java.io.Serializable {
private int age;
private String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void outPut(){
System.out.print(name+"的年龄为"+age);
}
}
package com.date;
public class DateDome {
private int year=0;//年
private int month=0;//月
private int day=0;//日
public DateDome(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
}
public DateDome(){
}
//年大于等于0
public boolean isYear(){
boolean suc=false;
if(year0)return suc;
else if(year=0)suc=true;
return suc;
}
//判断月数1-12月
public boolean isMonth(){
boolean suc=false;
if(month0||month12)return false;
else suc=true;
return suc;
}
//判断天数1-31号
public boolean isDay(){
boolean suc=false;
if(day=0||day31)return suc;
else suc=true;
return suc;
}
//是否为闰年
public boolean isRunNian(int year){
boolean suc=false;
if(year=0){
if(year%400==0||(year%4==0year%100!=0)){
suc=true;
}
}
return suc;
}
//判断合法年月日
public boolean isInvaildate(int year,int month, int day){
boolean suc=false;
if(isYear()isMonth()isDay()){
switch(month){
case 1:
suc=true;
break;
case 2:
if(isRunNian(year)day=29){
suc=true;
}else if(day=28){
suc=true;
}
break;
case 3:
suc=true;
break;
case 4:
if(day=30)suc=true;
break;
case 5:
suc=true;
break;
case 6:
if(day=30)suc=true;
break;
case 7:
suc=true;
break;
case 8:
suc=true;
break;
case 9:
if(day=30)suc=true;
break;
case 10:
suc=true;
break;
case 11:
if(day=30)suc=true;
break;
case 12:
suc=true;
break;
}
}
return suc;
}
//根据日期得到天数
public int getDaysByDate(int year,int month,int day){
int days=0;
if(isInvaildate(year,month,day)){
for(int i=0;iyear;i++){
if(isRunNian(i)){
days+=366;
}else{
days+=365;
}
}
for(int i=1;imonth;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
days+=31;
}else if(i==4||i==6||i==9||i==11){
days+=30;
}else if(i==2){
if(isRunNian(year)){
days+=29;
}else{
days+=28;
}
}
}
days+=day-1;
return days;
}else{
System.out.println("处理有非法日期!!!");
return -1;
}
}
//根据天数得到日期数int[]由,年、月、日组成的数组
public int[] getDateByDays(int days){
int das=0;//预计的天数
int y=0,m=1,d=1;//0年1月1号
int[] date=new int[3];
boolean suc=true;
int temp=0;
if(days0){
System.out.println("请输入合法天数!!!");
return new int[]{0,0,0};
}
while(suc){
if(isRunNian(y)){
temp=366;
}else{
temp=365;
}
das+=temp;
if(dasdays){
y++;
}else{
das-=temp;
break;
}
}
while(suc){
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
temp=31;
}else if(m==4||m==6||m==9||m==11){
temp=30;
}else if(m==2){
if(isRunNian(y)){
temp=29;
}else{
temp=28;
}
}
das+=temp;
if(dasdays){
m++;
}else{
das-=temp;
break;
}
}
d=days-das+1;
date[0]=y;
date[1]=m;
date[2]=d;
return date;
}
//得到多少天前或后合法日期
public int[] addORsubDay(int dd){
int days=getDaysByDate(year,month,day);
if(days=0){
days+=dd;
if(days0){
return getDateByDays(days);
}else{
System.out.println("处理日期不能小于0年1月1号");
return new int[]{0,0,0};//代表无效日期
}
}else{
System.out.println("处理日期不能小于0年1月1号");
return new int[]{0,0,0};//年,月,日
}
}
//得到两个日期相距天数
public int TwoDate(int[] date1,int[] date2){
int d=-1;
if(isInvaildate(date1[0],date1[1],date1[2])isInvaildate(date2[0],date2[1],date2[2])){
int days1=getDaysByDate(date1[0],date1[1],date1[2]);
int days2=getDaysByDate(date2[0],date2[1],date2[2]);
d=days1-days2;
return d=0?d:-d;
}else
{
System.out.println("处理有非法日期!!!");
return d;
}
}
}
我写了你提出的功能,你还可以扩展其它功能。
来分析下问题:
要输出的是一个矩阵,对于矩阵来说有两个重要的参数,行和列,如果更灵活一点的话就是矩阵每个点的表示符号,以及列之间的分隔符:
用面向对象的方式来分析问题,这个对象有四个属性,行数,列数,和矩阵中每个点的符号表示及列与列之间的分隔符表示,并且这个类有个行为,就是打印矩阵,因此这个需求可以用这样一个类来表示,四个属性,一个行为(方法):
public class Matrix {
private int rows;
private int cols;
private char symbol;
private String separator;
public Matrix(int rows, int cols, char symbol, String separator) {
this.cols = cols;
this.rows = rows;
this.symbol = symbol;
this.separator = separator;
}
public void print() {
StringBuilder builder = new StringBuilder();
for (int i = 0; i rows; i++) {
for (int j = 0; j cols; j++) {
builder.append(symbol);
if (j cols - 1) {
builder.append(separator);
}
}
if (i rows - 1) {
builder.append("\r\n");
}
}
System.out.print(builder.toString());
}
public static void main(String[] args){
Matrix matrix = new Matrix(10,10,'*'," ");
matrix.print();
}
}