1.计算1+2+3+..+100的和;
2.计算n!;
3.根据出入的年、月、日计算这一天星期几
用IntelliJ IDEA写的代码。
import java.util.Scanner;
/**
* 循环训练
* 1.计算1+2+3+..+100的和; 2.计算n!; 3.根据出入的年、月、日计算这一天星期几
*/
public class XunHuan {
/**
* 计算1+2+3+..+100的和
* @param
*/
static int sum(){
int s=0;
int i=1;
//for(int i=1;i<=100;i++) s=s+i; //用for循环的写法
while (i<=100){
s=s+i;
i=i+1;
}
return s;
}
/**
* 计算n!
* @return 阶乘
*/
static double jieChen(int n){
double j=1;
//for(i=1;i<=n;i++) j=j*i; //用for循环的写法
while (n>1){
j=j*n;
n--;
}
return j;
}
/**
* 根据出入的年、月、日计算这一天星期几
* (基础:1900年1月1日是星期一)
* @param y 年
* @param m 月
* @param d 日
* @return 星期几
*/
static String week(int y,int m,int d){
int days=(y-1900)*365;//days :总天数。从1900到y年的整年总天数(先假设每一年都是365天),暂时不算闰年多一天。
//加上闰年的天数:
for (int i=1900;i<y;i++){ //for循环
if (i%4==0&&i%100!=0||i%400==0) days++; //括号里是闰年的算法
}
//加上1到m月的整月天数:
for (int i=1;i<m;i++){
switch (i){ //switch 语句用于基于不同的条件来执行不同的动作。
// 表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行
case 2:days+=28;
if (y%4==0&&y%100!=0||y%400==0) days++;break; //使用 break 来阻止代码自动地向下一个 case 运行
case 4: case 6: case 9: case 11: days+=30;break; //4,6,9,11几个月份时,总天数加30
default:days+=31;break;
}
}
days+=d;//加上这个月的天数
String[] s={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; //定义一个数组
return s[days%7]; //总天数对7取余,余数对应数组中的元素
}
//测试
public static void main(String[] args){
// 1....100的和 测试
int s=sum();
System.out.println("1....100的和是:"+s);
//阶乘方法 测试
int n;
Scanner in=new Scanner(System.in);
System.out.println("请输入n的值:");
n=in.nextInt();
double j=jieChen(n);
System.out.println(n+"!="+j);
//输出星期几 测试
System.out.println("请输入年月日(用空格隔开):");
int y,m,d;
y=in.nextInt();m=in.nextInt();d=in.nextInt();
String w=week(y,m,d);
System.out.println(y+"年"+m+"月"+d+"日"+" "+w);
}
}