public static void main(String[] ages){
/*
嵌套循环--》多重循环
在一个循环里面,内部又嵌套了另一个循环结构,久=就构成了嵌套循环
三种循环基本结构都可以实现嵌套循环,还可以交叉使用
for while do-while
本质:1.内层循环充当了外层循环中的循环体内容,
2.当内层循环的条件为false时,才会跳出内层循环,执行外层循环,
3.只有当外层循环结构中的循环条件为false时,才会结束整个嵌套循环
4.在嵌套循环结构中的循环总次数 = 内层循环次数 * 外层循环的次数
*/
//九九乘法表
/*
解题思路:1.乘法公式的表达式 = 前乘数*后乘数 = 乘积值
前乘数是每行首次输出的时候,都是从1开始的
紧邻后面的乘法表达式中的表达式中前乘数都是在前面的前乘数的基础加1
当该行中的前乘数=后乘数的时候 该行的乘法表达式输出结束
2.如何确定外层循环和内层循环
从行数入手,那就是行数是外层循环中的循环变量
列数就是内层循环中的循环变量
3.循环次数是已知的,确定的,建议使用for循环
4.首要的是先确定外层循环--》 确定外层循环的循环变量
*/
for (int i=1;i<10;i++){//行数i乘法公式中的后乘数
//列数 初始化变量值1 循环的条件 前乘数=后乘数
//变量定义:在同一个作用域内部,变量名只能被定义1次 变量的数据类型 变量名[=变量值]
for (int j=1;j<=i;j++){//列数 j 乘法公式中的前乘数
//此时程序中含有前乘数,后乘数 可以书写乘法公式 前乘数×后乘数=乘积
//当内层循环结束的时候,输出乘法公式换行
System.out.print(j+"×"+i+"="+i*j+" ");
}
//当内层循环结束的时候,输出乘法公式换行
System.out.println();
}
//求一下100以内所有的质数,并且求出这些质数的和是多少?
/*
解题思路:
需要嵌套循环
外层循环 需要判断的数是不是质数, 是外层循环的变量 被除数--》外层循环的变量
内层循环 拿外层参与循环的数除以内层的除数 除数就是内层循环的变量
*/
boolean isPrime = true;//true 质数 false 不是质数
int sum = 0;//质数的累加和
//外层循环
for (int i=2;i<=100;i++){//被除数
//除数
for (int j=2;j<i;j++){
//判断是否为质数
if (i%j==0){
isPrime=false;//表面该数不是质数
break;
}
}
//输出该循环的数是否为质数
if (isPrime==true){
System.out.println(i+" ");
sum=sum+i;//质数累加
}
//还原初始化变量值
isPrime=true;//当完整的判断一个数是否为质数后,需要对定义的标记还原成初始化值
}
//输出1~100以内的所有的质数累加和
System.out.println(sum);*/
/*boolean isPrime=true;//true 质数 false 不是质数
int num = 37;
for (int i=2;i<num;i++){
if (num%i==0){
isPrime=false;
break;
}
}
if (isPrime==true){
System.out.println(num+"是一个质数");
}else {
System.out.println(num+"不是一个质数");
}
//需求3 图案题 打印圣诞树 正立的等腰三角形
/*
图案代表*实心等腰三角形
*
***
*****
*******
*********
***********
嵌套循环:
外层循环 外层循环变量--》行数给定的
内层循环 内层循环变量--》内层循环的循环条件是*个数<=an换行
规律:1 3 5 7 9 11 13等差数列
列通项公式 an =a1+(n-1)*d
an-->第n项的数值
a1-->第一项的数值
n-->项数 在该数列中,要求的第几个数
d-->公差 后一项减前一项的差值,这个差值始终是相等的
1 2 4 8 16 32 64 128 256 。。。。。等比数列
列通项公式 an = a1q1^(n-1)
2 = 12^(2-1)=2
4 = 1*2^(3-1)=4
an-->第n项的数值
a1-->第一项的数值
n-->项数 在该数列中,要求的第几个数
q-->公比 后一项比前一项的商数,这个商数始终是相等的
本题中“:
*的部分 正三角形
1 3 5 7 9 11 13等差数列
an=a1+(n-1)*d
an-->*的个数
a1-->第一行的*的个数
n--》行数
d--》*的行差数=2
循环条件; *<=an
空白部分:倒立的三角形
从上往下输出 6 5 4 3 2 1 0
an =a1+(n-1)*d
a1=6
d=-1
循环条件 空白<=an=a+(n+1)*d
=line-1+(i-1)*(-1)
=line-1-i+1
*/
int line =7;//行数为7
for (int i=1;i<=line;i++){//i行数 外层循环变量
//内层循环 分成两部分 空白 + *
//空白部分 空格代替
for (int j=1;j<=line-i;j++){//j 空白 内层循环变量
//输出空白部分 空格
System.out.print(" ");//只输出空格不换行
}
//*的部分 *代替
for (int k=1;k<=2*i-1;k++){
//输出*的部分
System.out.print("*");//指输出*不换行
}
//当前所有的信息输出完毕,此时换行
System.out.println();//只换行不输出
}
int k=1;
int sum=100000;
int d=0;
int one=0;
int two=0;
int three=0;
int four=0;
int five=0;
int six=0;
int seven=0;
int eight=0;
int nine=0;
int ten=0;
int i=1;
for (int t=1;t<=sum;t++){
d=i%10;
i= (++i)+(k++);
switch (d) {
case 1:
one++;
break;
case 2:
two++;
break;
case 3:
three++;
break;
case 4:
four++;
break;
case 5:
five++;
break;
case 6:
six++;
break;
case 7:
seven++;
break;
case 8:
eight++;
break;
case 9:
nine++;
break;
case 0:
ten++;
break;
}
}
System.out.println("one="+one);
System.out.println("two="+two);
System.out.println("three="+three);
System.out.println("four="+four);
System.out.println("five="+five);
System.out.println("six="+six);
System.out.println("seven="+seven);
System.out.println("eight="+eight);
System.out.println("nine="+nine);
System.out.println("ten="+ten);