实例1. 求某年某月某天是这年的第多少天?
switch和break的灵活运用
<span style="font-size:14px;">package com.lovo.homework;
import java.util.Scanner;
public class TestHome1 {
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * @param args
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>/*
<span style="white-space:pre"> </span> * 输入年月日,得到这一天是当年的第几天
<span style="white-space:pre"> </span> * 思路:
<span style="white-space:pre"> </span> * 1、首先接收用户输入的年月日三个整数;
<span style="white-space:pre"> </span> * 2、根据根据月和日得到是第几天;
<span style="white-space:pre"> </span> * 3、如果月份超过2月,则根据年份是否是闰年判断给结果再加上1天
<span style="white-space:pre"> </span> * 4、打印出结果
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>Scanner scan = new Scanner(System.in);
<span style="white-space:pre"> </span>System.out.println("请输入年份:");
<span style="white-space:pre"> </span>int year = scan.nextInt();
<span style="white-space:pre"> </span>System.out.println("请输入月份:");
<span style="white-space:pre"> </span>int month = scan.nextInt();
<span style="white-space:pre"> </span>System.out.println("请输入日期:");
<span style="white-space:pre"> </span>int day = scan.nextInt();
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>int dayOfYear = 0;//保存这是第几天的变量
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>switch(month){
<span style="white-space:pre"> </span>case 12:
<span style="white-space:pre"> </span>dayOfYear += 30;
<span style="white-space:pre"> </span>case 11:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 10:
<span style="white-space:pre"> </span>dayOfYear += 30;
<span style="white-space:pre"> </span>case 9:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 8:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 7:
<span style="white-space:pre"> </span>dayOfYear += 30;
<span style="white-space:pre"> </span>case 6:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 5:
<span style="white-space:pre"> </span>dayOfYear += 30;
<span style="white-space:pre"> </span>case 4:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 3:
<span style="white-space:pre"> </span>dayOfYear += 28;
<span style="white-space:pre"> </span>case 2:
<span style="white-space:pre"> </span>dayOfYear += 31;
<span style="white-space:pre"> </span>case 1:
<span style="white-space:pre"> </span>dayOfYear += day;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>if(month > 2){
<span style="white-space:pre"> </span>//判断是否是闰年
<span style="white-space:pre"> </span>if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
<span style="white-space:pre"> </span>dayOfYear += 1;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>System.out.println(year + "年"+month+"月"+day+"日是这一年的第"+dayOfYear+"天。");
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
}
</span>
实例2:
循环逻辑的思考方式
<span style="font-size:14px;">package com.lovo.homework;
public class TestHome3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//一对老耗子每个月都生一对小子,小耗子长三个月,第四个月成长为
//老耗子开始生!假设所有耗子都不死,20个月之后共有多少只耗子。
int old = 2, first = 0, second = 0, third = 0;
for(int i = 0; i < 20; i++){
old = old + third;
third = second;
second = first;
first = old;
}
System.out.println("20个月后总共有" + (old + first + second + third) + "只耗子.");
}
}</span>
实例3:
用函数方法的方式些九九乘法表
<span style="font-size:14px;">public class 九九乘法表 {
/**
*/
public static void main(String[] args) {
count(1, 1);
}
public static void count(int i, int j) {
//
int c = i * j;
System.out.print(i + "*" + j + "=" + c + "\t");
if (j > i) {//
i++;
} else if (i == j) {//
System.out.println();
i = 1;
j++;
} else {//
j++;
}
if (i == 10 || j == 10) {
return; //
}
count(i, j);
}
}</span>
实例4:1000瓶药水里面有1瓶是有毒的,现在要用小白鼠试毒,需24h后才能看到效果,医生需在24h检查出结果,求至少需要几只小白鼠才能确定哪一瓶有毒的??(每只小白鼠可以同时试尝多瓶药水)
逻辑的思维考研
分析:
1瓶药水,需要至少1只小白鼠试出结果;
2瓶药水,需要至少1只小白鼠试出结果;3瓶药水,需要至少2只小白鼠试出结果;
4瓶药水,需要至少2只小白鼠试出结果;
5瓶药水,需要至少3只小白鼠试出结果;
可以推测,1只小白鼠有2种状态-----生和死 或者是----1 和 0 ;即可以表示2种状态的;
2只小白鼠时,则可以表示2^2=4种状态,则可以最多检验4个瓶子;
n个小白鼠,则可以表示2^n种状态,
1000个瓶子,需要2^10=1024个瓶子;即10个小白鼠;