例子:
/*
需求:小芳的妈妈每天给她2.5元钱,她都会存起来,但是,
每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,
请问,经过多少天,小芳才可以存到100元钱。
分析:
A:小芳的妈妈每天给她2.5元钱
double dayMoney = 2.5;
B:她都会存起来
double daySum = 0;
C:从第一天开始存储
int dayCount = 1;
D:经过多少天,小芳才可以存到100元钱。
double result = 100;
E:这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,
说明要判断dayCount的值,如果对5整除就减去6元钱。
daySum -= 6;
由此还隐含了一个问题,就是如果不是5的倍数天的话,钱要累加
daySum += dayMoney;
F:因为不知道是多少天,所以我用死循环,一旦超过100元我就退出循环。
*/
class WhileDemo {
public static void main(String[] args) {
//每天要存储的钱是2.5元
double dayMoney = 2.5;
//存钱的初始化值是0
double daySum = 0;
//从第一天开始存储
int dayCount = 1;
//最终存储不小于100就不存储了
int result = 100;
//因为不知道是多少天,所以我用死循环,
while(true) {
//累加钱
daySum += dayMoney;
//一旦超过100元我就退出循环。
if(daySum >= result) {
System.out.println("共花了"+dayCount+"天存储了100元");
break;
}
if(dayCount%5 == 0) {
//花去6元钱
daySum -= 6;
System.out.println("第"+dayCount+"天花了6元钱");
}
//天数变化
dayCount++;
}
}
}
/*
我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。
请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
分析:
A:定义一个统计变量,默认值是0
B:最高山峰是珠穆朗玛峰:8848m这是最终的厚度
我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度
C:我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
折叠一次有什么变化呢?就是厚度是以前的2倍。
D:只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++
E:输出统计变量。
*/
class WhileDemo5 {
public static void main(String[] args) {
//定义一个统计变量,默认值是0
int count = 0;
//最高山峰是珠穆朗玛峰:8848m这是最终的厚度
//我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度
//为了简单,我把0.01变成1,同理8848就变成了884800
int end = 884800;
int start = 1;
while(start
}
/*
需求:求5的阶乘。
什么是阶乘呢?
n! = n*(n-1)! 规则
n! = n*(n-1)*(n-2)*...*3*2*1
求和思想。
求阶乘思想。
*/
class ForDemo5 {
public static void main(String[] args) {
//定义最终结果变量
int jc = 1;
//这里的x其实可以直接从2开始
//for(int x=1; x<=5; x++)
for(int x=2; x<=5; x++) {
jc *=x;
}
System.out.println("1-5的阶乘是:"+jc);
}
}
/*
练习:
请在控制台输出满足如下条件的五位数
个位等于万位
十位等于千位
个位+十位+千位+万位=百位
分析:
A:五位数就告诉了我们范围。
B:分解每一个五位数的个,十,百,千,万位上的数据
C:按照要求进行判断即可
*/
class ForDemo7 {
public static void main(String[] args) {
//五位数就告诉了我们范围。
for(int x=10000; x<100000; x++) {
//分解每一个五位数的个,十,百,千,万位上的数据
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
int qian = x/10/10/10%10;
int wan = x/10/10/10/10%10;
//按照要求进行判断即可
if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {
System.out.println(x);
}
}
}
}
/**
* 兔子数 1,1,2,3,5,8,13,21....
* */
public static void tuZiShu() {
// 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数為多少?
// 解决思路:兔子的规律为数列1,1,2,3,5,8,13,21....
int[] anArray2 = new int[10];
anArray2[0] = 1;
anArray2[1] = 1;
for (int i = 0; i < anArray2.length; i++) {
if (i < 2) {
System.out.println(anArray2[i]);
} else {
anArray2[i] = anArray2[i - 1] + anArray2[i - 2];
System.out.println(anArray2[i]);
}
}
}
/** 判断101-200之间有多少个素数 */
public static void suShu() {
// 判断101-200之间有多少个素数,并输出所有素数。
// 解决思路:判断素数的方法:用一个数分别去除2sqrt这个数如果能被整除,则表明此数不是素数,反之是素数。
for (int i = 101; i <= 200; i++) {
if (i % 2 == 0) {
continue;
} else {
System.out.println(i);
}
}
}
/** 水仙花数 */
public static void shuiXianHuaShu() {
// 打印出所有的"水仙花数"所谓"水仙花数"指一个三位数,其各位数字立方和等于该数本身。例如:
// 153一个"水仙花数"因為153=1三次方+5三次方+3三次方。
// 解决思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
for (int i = 100; i <= 999; i++) {
int geWei, shiWei, baiWei;
baiWei = i / 100;
shiWei = (i - baiWei * 100) / 10;
geWei = i - baiWei * 100 - shiWei * 10;
if (i == geWei * geWei * geWei + shiWei * shiWei * shiWei + baiWei * baiWei * baiWei) {
System.out.println(i);
}
}
}
/** 三目运算符 */
public static void sanMuYunSuan() {
// 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A 表示,60-89分之间的用B表示,60分以下的用C表示。
// 解决思路:a>b?a:b这是条件运算符的基本例子。
int chengji = 99;
if (chengji >= 90) {
System.out.println("A");
} else if (chengji >= 60 && chengji <= 89) {
System.out.println("B");
} else if (chengji <= 60 && chengji >= 0) {
System.out.println("C");
}
}
/** 9*9乘法表 */
public static void chengFaBiao() {
// 9*9乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + i * j + "\t");
}
System.out.println("\n");
}
}
/** 空心菱形 */
// 空心菱形
public static void lingXing() {
for (int i = 1; i <= 10; i++) {// 控制行数
for (int j = 1; j <= 10 - i; j++) {// 控制空格
System.out.print(" ");
}
for (int z = 1; z <= 2 * i - 1; z++) {// 控制*
if (z == 1 || z == 2 * i - 1) {// 打印第一个*和最后一个*,其余的输出空格
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
for (int i = 10; i > 0; i--) {
for (int j = 1; j <= 10 - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
if (k == 1 || k == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
/** 求质数 */
public static void qiuZhiShu() {
for (int i = 100; i <= 200; i++) {
boolean jieguo = true;
for (int j = 2; j < i; j++) {// 找到不是质数的数(除了1与它本身还能被其他数整除的数)
if (i % j == 0) {
jieguo = false;
break;
}
}
if (jieguo) {
System.out.print(i + " ");
}
}
System.out.println();
}
/** 矩形+面积 */
public static int test4() {
int m = 0;
for (int i = 1; i <= 20; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print("*");
m++;// 面积:输出一个*m就++
}
System.out.println();
}
// int s=20*5;
return m;
}
/** 传参求矩形的面积 */
public static int juXing(int hang, int kuan) {
for (int i = 1; i <= hang; i++) {
for (int j = 1; j <= kuan; j++) {
System.out.print("*");
}
System.out.println();
}
return hang * kuan;
}
/** 重载练习:定义边长的参数,返回矩形的面积 */
public static int test6(int hang) {
for (int i = 1; i <= hang; i++) {
for (int j = 1; j <= 6; j++) {
System.out.print("*");
}
System.out.println();
}
return hang * 6;
}
/** 分解质因数 */
public static void fenJieZhiYinShu() {
// 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
// 解决思路:对n进行分解质因数,应先找到一个最小的质数k然后按下述步骤完成:
// 1如果这个质数恰等于n则说明分解质因数的过程已经结束,打印出即可。
// 2如果n<>k但n能被k整除,则应打印出k值,并用n除以k商,作為新的正整数你n,重復执行第一步。
// 3如果n不能被k整除,则用k+1作為k值,重復执行第一步。
Scanner input = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int num = input.nextInt();
if (num < 2) {// 若输入的数小于2,输出提示信息
System.out.println("必须输入不小于2的正整数!");
} else {
int k = 2;// 定义最小的质数
while (k <= num) {// 在质数小于输入的数时,进行循环
if (k == num) {// 当质数等于输入的数时,直接输出
System.out.print(num);
break;// 跳出循环
} else if (num % k == 0) {// 当输入的数与质数的余数为0时,输出这个质数
System.out.print(k + " ");
num = num / k;// 把剩下的结果赋给num
} else {// 在余数不为0时,质数递增
k++;
}
}
}
}
/** 最大公约数,最小公倍数 */
public static void gysAndgbs() {
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = input.nextInt();
System.out.println("请输入第二个数:");
int num2 = input.nextInt();
int gong = 1;
System.out.print("所有公约数");
for (int i = 1; i <= num1 && i <= num2; i++) {
if (num1 % i == 0 && num2 % i == 0) {
System.out.print(i + " ");
gong = i;
}
}
System.out.println("\n最大公约数" + gong);
for (int i = num1 > num2 ? num1 : num2; i <= num1 * num2; i++) {
if (i % num1 == 0 && i % num2 == 0) {
System.out.print(i);
break;
}
}
}
/** 判断字符串包含数字个数 */
public static void shuZiNum() {
// 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
// 解决思路:利用while语句,条件為输入的字符不為1\n1.
// 判断纯数字,Character.isDigit();
String str = "aaa11";
char a[] = str.toCharArray();
int count = 0;
for (int i = 0; i < a.length; i++) {
// System.out.println(a[i]);
if (Character.isDigit(a[i])) {
System.out.println(a[i]);
count++;
}
}
System.out.println("包含" + count + "个数字");
}
/**
* 数字累加
* */
public static void leiJia() {
// 题目:求s=a+aa+aaa+aaaa+aa...a值,其中a一个数字。例如2+22+222+2222+22222此时共有5个数相加几个数相加有键盘控制。
// 解决思路:关键是计算出每一项的值。
Scanner input = new Scanner(System.in);
int s = input.nextInt();
int sum = s;
String shu = String.valueOf(s);
for (int i = 1; i < 5; i++) {
shu = shu + String.valueOf(s);
System.out.println(shu);
sum = sum + Integer.parseInt(shu);
}
System.out.println(sum);
}
/**
* 求奇数和
* */
public static void jiShuhe() {
int he = 0;
System.out.println("100以内的奇数为:");
for (int i = 1; i <= 100; i++) {
if (i % 2 != 0) {
System.out.println(+i);
he = he + i;
}
}
System.out.println("奇数和:" + he);
}
/** 偶数和 */
public static void ouShuhe() {
int he = 0;
System.out.println("100以内的偶数为:");
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
System.out.println(+i);
he = he + i;
}
}
System.out.println("偶数和:" + he);
}
/** 每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花费100元买100只鸡,有多少种方法 */
public static void maiJi() {
int zhishu = 100;
int money = 100;
int muji = 0;
int gongji = 0;
int xiaoji = 0;
for (muji = 0; muji <= zhishu; muji++) {
for (gongji = 0; gongji <= zhishu; gongji++) {
for (xiaoji = 0; xiaoji <= zhishu; xiaoji++) {
if ((muji + gongji + xiaoji == zhishu) && (3 * muji + 4 * gongji + 0.5 * xiaoji == money)) {
System.out.println("母鸡:" + muji + "公鸡数:" + gongji + "小鸡数量:" + xiaoji);
}
}
}
}
}
}