JAVA实现下面两个 题

如果1900年1月1日是星期一。输入任意的年月日,输出它是这一年的第几天?星期几?

输入一个正整数,求它的所有因子。

 

 

 

最好注释解释一下,新手可懂最好

import java.util.Scanner;
/**
 * @kilimy
 */
public class Demo1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入正整数n");
		int num = sc.nextInt();
		System.out.print(num + "=1");
		int i = 2;
		do {
			if (num % i == 0) {
				System.out.print("*" + i);
				num = num / i;
			} else {
				i++;
			}
		} while (num > 1);
	}
}

 

因子:

import java.util.Scanner;
public class Main{
    public static String getResult(long ulDataInput){
        StringBuilder sc = new StringBuilder();
        int k =2;
        while(ulDataInput != 1){
            if(ulDataInput % k == 0){
                sc.append(k +" ");
                ulDataInput = ulDataInput/k;
                k = 2;
            }
            else{ k++;}
            
        }
        return sc.toString();
    }
    
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
           long s =sc.nextLong();
            System.out.println(getResult(s));
    }
}
}

 

第几天可以使用这篇文档。

https://blog.csdn.net/weixin_43761659/article/details/96889620

这篇文章可以很好的解决上述的问题。

星期几可以使用这篇文档。

https://blog.csdn.net/jisuanjiguoba/article/details/79075939

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Datetest{
	public static void main(String[] args){
		System.out.println("请输入三个以内的数字,并以#结束:");
		Scanner input = new Scanner(System.in);
		String str="";
		StringBuffer sb = new StringBuffer();
		Calendar calendar = Calendar.getInstance();
		String weekd = "日一二三四五六";
		while(!(str=input.next()).equals("#")){
			sb.append(str+";");
		}
		String subs=sb.toString();
		String[] arr = subs.split(";");
		if(arr.length!=3){
			System.out.println("输入数据错误!");
		}
		else{
			String date = arr[0]+"-"+arr[1]+"-"+arr[2];
			SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
			Date datet = null;
			try {
				datet = f.parse(date);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			calendar.setTime(datet);
			int day = calendar.get(Calendar.DAY_OF_WEEK);
			System.out.println("这天是星期"+weekd.substring(day-1,day));
		}
	}
}

 

先计算天数,再与7整除

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTools {

    /**
     * 日期转星期
     * 
     * @param datetime
     * @return
     */
    public static String dateToWeek(String datetime) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance(); // 获得一个日历
        Date datet = null;
        try {
            datet = f.parse(datetime);
            cal.setTime(datet);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
        if (w < 0)
            w = 0;
        return weekDays[w];
    }

    public static void main(String[] args) {
        System.out.println(DateTools.dateToWeek("2017-01-01"));
    }
}
public static String dateToWeek(Date dateTime){
        String[] weekDays = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dateTime);
        //指示一个星期中的某天
        int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if(w < 0){
            w = 0;
        }
        return  weekDays[w];
    }

 

import java.util.Scanner;
 
public class Test18 {
	/*
	题目描述
	根据输入的日期,计算是这一年的第几天。。
	详细描述:
	输入某年某月某日,判断这一天是这一年的第几天?。
	输入描述:
	输入三行,分别是年,月,日
	输出描述:
	成功:返回outDay输出计算后的第几天;                                            失败:返回-1
	输入例子:
	2012
 
	12
 
	31
	输出例子:
	366
	如何判断平年和闰年,可以分为两种情况来看:
	1、能被4整除的年份是闰年,不能被4整除的年份是平年。
	如:2012和2016是闰年,2014和2015是平年
 
	2、如果是世纪年(即整百年),就只有能被400整除才是闰年,否则就是平年。
	如:2000年是闰年,1900年是平年
 
	闰年2月有29天,平年2月只有28天。
	*/
	public static void main(String[] args) {
		Scanner scn=new Scanner(System.in);
		while(scn.hasNext()){
			int year=scn.nextInt();
			int month=scn.nextInt();
			int day=scn.nextInt();
			countDays(year,month,day);
		}
		
	}
	public static void countDays(int year,int month,int day){
 
		int sum=0;
		switch (month-1) {
		case 11:sum+=30;
		case 10:sum+=31;
		case 9:sum+=30;
		case 8:sum+=31;
		case 7:sum+=31;
		case 6:sum+=30;
		case 5:sum+=31;
		case 4:sum+=30;
		case 3:sum+=31;
		case 2: if(isRunNian(year)){
			sum+=29;
		}else {
			sum+=28;
		}
		case 1:sum+=31;
		}
		sum+=day;
		System.out.println(sum);
	}
	public static boolean isRunNian(int year){
		if(year%400==0||year%4==0&&year%100!=0){
			return true;
		}else {
			return false;
		}
	}
}
 

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632