//1. 循环打印输入的月份的天数。 【使用continue实现】
// – 要有判断输入的月份是否错误的语句
import java.util.Scanner;
public class HomeWork1
{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int year,month,day;
boolean flag = false;
String temp;
do{
System.out.println("请输入年月日:");
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
if(!(month >= 1 && month <=12)){
System.out.println("输入月份不正确!");
continue;
}else{
if(!(day >= 0)){
System.out.println("输入日期不正确!");
continue;
}else{
//1、3、5、7、8、10、12月每月31天,4、6、9、11月每月30天 ,2月28天
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(!(day <= 31)){
System.out.println("输入日期不正确!");
}else{
System.out.printf("输入日期为:%d年%d月%d日\n",year,month,day);
}
break;
case 4:
case 6:
case 9:
case 11:
if(!(day <= 30)){
System.out.println("输入日期不正确!");
}else{
System.out.printf("输入日期为:%d年%d月%d日\n",year,month,day);
}
break;
case 2:
if(!(day <= 28)){
System.out.println("输入日期不正确!");
}else{
System.out.printf("输入日期为:%d年%d月%d日\n",year,month,day);
}
break;
}
}
}
System.out.println("是否继续输入?(Y/N)");
temp = input.next();
if("Y".equalsIgnoreCase(temp)){
flag = true;
}else if ("N".equalsIgnoreCase(temp)){
flag = false;
}else{
System.out.println("输入错误!");
break;
}
}while(flag);
System.out.println("程序结束!");
}
}

/**
2. 随机猜数游戏: 【选做】
随机生成一个1——100的整数
有十次机会
如果第一次就猜中,提示 “你真是个天才”
如果第2——3次猜中,提示“你很聪明,赶上我了”
如果第4——9次猜中,提示“一般般”
如果最后一次猜中,提示“可算猜对啦”
一次都没猜对,提示“说你点啥好呢”
【嵌套循环】
*/
import java.util.Scanner;
public class HomeWork2
{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int inGuess = 0;
int guessNumber = (int)(Math.random()*100) + 1;//这里一定要加一,因为random是[0,1)的随机数
for(int i = 1 ; i <= 10 ; i++){
System.out.printf("请输入你猜的数(1-100),还有%d次机会哦:\n",10-i);
inGuess = input.nextInt();
if(inGuess == guessNumber){
if(i == 1){
System.out.println("你可真是天才!");
break;
}else if(i<=3){
System.out.println("你很聪明,赶上我了!");
break;
}else if(i<=9){
System.out.println("一般般!");
break;
}else if(i == 10){
System.out.println("可算猜对啦!");
break;
}
}else{
if(!(i == 10)){
if(inGuess > guessNumber){
System.out.println("大了");
}else{
System.out.println("小了");
}
continue;
}else{
System.out.println("说你点啥好呢!答案是:"+ guessNumber);
}
}
}
}
}
/**
输出100以内的所有素数(只能被1和自己整除的数, 1不是素数),每行显示5个;并求和。
sqrt()开平方
*/
import java.util.Scanner;
public class HomeWork3
{
public static void main(String[] args){
int sum = 0;
int count = 1;
boolean flag = true; //默认每个数都是素数
for(int i = 2 ; i <= 100 ; i++){ //1不是素数从2开始判断
//每次都需要重置flag , 因为flag标志了这个数是否为素数,所以每循环一个数就要重置一次
flag = true;
for(int j = 2 ; j < (i/2+1) ; j++){ //这里可以只取j-i之间范围的一半,因为后一半 等于 前一半*2
if(i % j == 0){
flag = false; //若这个数不是素数则改变flag
break;
}
}
if(!flag){
continue;
}else{
sum += i;
if(count != 5){
System.out.printf(i + "\t");
count++;
}else{
System.out.println(i);
count = 1; //重置count 这个是计算每行输出了多少个元素的变量
}
}
}
System.out.println();
System.out.println("所有素数之和为:" + sum);
}
}
/**
中国有句俗语叫“三天打鱼两天晒网”。
如果从1990年1月1日起开始执行“三天打鱼两天晒网”。
如何判断在以后的某一天中是“打鱼”还是“晒网”?(年,月,日是输入的.)
这里假设输入的日期都是正确的
思路:
1.首先计算从当前日期到1990年1月1日一共有多少天
2.用总天数 对 5取模。
*/
import java.util.Scanner;
public class HomeWork4
{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入年月日:");
int year = input.nextInt();
int month = input.nextInt();
int day = input.nextInt();
int totalDay = 0 ; //累计记录从输入日期到1990/1/1有多少天
for(int i = 1990 ; i < year ;i++){ //计算年
if(i % 400 == 0 || i % 4 ==0 && i % 100 != 0 ){
totalDay += 366;
}else{
totalDay += 365;
}
}
//计算月 方式1
// for(int i = 1 ; i < month; i++){ //计算月
// switch(i){
// //1、3、5、7、8、10、12月每月31天,4、6、9、11月每月30天 ,2月28天
// case 1:
// case 3:
// case 5:
// case 7:
// case 8:
// case 10:
// case 12:
// totalDay += 31;
// break;
// case 4:
// case 6:
// case 9:
// case 11:
// totalDay += 30;
// break;
// case 2: //由于当前年没有判断闰年 所以这里还是需要考虑
// if(year % 400 == 0 || year % 4 ==0 && year % 100 != 0 ){
// totalDay += 29;
// }else{
// totalDay += 28;
// }
// break;
// }
// }
//第二种计算月的方式,不使用循环,进行了优化,但影响不大,因为月份只有1-11
switch(month - 1){ //当前月份不用计算天数,此方法充分利用的"穿透"的特性!
//12月不用计算
case 11:
totalDay += 30;
case 10:
totalDay += 31;
case 9:
totalDay += 30;
case 8:
totalDay += 31;
case 7:
totalDay += 31;
case 6:
totalDay += 30;
case 5:
totalDay += 31;
case 4:
totalDay += 30;
case 3:
totalDay += 31;
case 2:
if(year % 400 == 0 || year % 4 ==0 && year % 100 != 0 ){
totalDay += 29;
}else{
totalDay += 28;
}
case 1:
totalDay += 31;
}
totalDay += day; //计算日
// if(totalDay % 5 >= 1 && totalDay % 5 <= 3){
// System.out.printf("%d年%d月%d日这天在 打鱼!\n",year,month,day);
// }else{
// System.out.printf("%d年%d月%d日这天在 晒网!\n",year,month,day);
// }
switch(totalDay % 5){
case 1:
case 2:
case 3:
System.out.printf("%d年%d月%d日这天在 打鱼!\n",year,month,day);
break;
default:
System.out.printf("%d年%d月%d日这天在 晒网!\n",year,month,day);
}
}
}

原文:https://www.cnblogs.com/SongHai/p/14018247.html