//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