一:循环结构:
while
while格式
/* while格式
* while(添加表达式){
* 条件表达式成立时执行的代码块
* }
* 格式与if完全相同
* */
while执行过程
int a=1;
if(a<5) {
System.out.println("if a="+a);
}
//if :条件表达式成立 执行代码块一次
a=1;
while(a<5) {
System.out.println("while a="+a);
Thread.sleep(200);
a++;//完全等价于 a=a+1;
}
//while :1 判断条件表达式是是否成立 不成立结束while
// : 2 条件表达式成立 执行代码块一次
// : 3 继续 1 2 直到条件表达式不成立
while组成
/*while的组成:
* 1 a<5:条件表达式
* 2 System.out.println("while a="+a); 循环执行的代码::循环体
* 3 a++;迭代语句
*选择执行或者不执行 用if-elase
*需要一个数从值1有规律的跑到值2时 用while
* */
while练习
求1到100的和
//求1+2+3+...100;
//System.out.println(1+2+3+4+5...+100);
//0+1=1 1+2=3 3+3=6 6+4=10 10+5=15
int sum=0;//记录结果 赋初始值为0
//循环的把一个数n加入sum中 n的值需要从1开始 每次+1
int n=1;//定义一个变量记录每次加入sum的数 从1开始
while(n<=100) {//循环的条件
sum+=n;//循环执行的代码
n++;//每次n的值需要+1
}
//循环完后 打印最终的结果
System.out.println("1+2+3+...100="+sum);
System.out.println("n="+n);//101
//迭代语句:按指定的算符重复的更改某个变量的值
求1到100内所有可以被3整除的数的平均值
//2 求1到100内所有可以被3整除的数的平均值
int sum=0,geShu=0;//定义变量记录和 个数
//定义变量n 从1开始跑
int n=1;
//使用循环让其从1跑到100
while(n<=100) {
//判断是否可以被3整除
sum+=(n%3==0?n:0);
geShu+=(n%3==0?1:0);
n++;
}
//获取平均值:
System.out.println("1到100内所有可以被3整除的数的平均值="+(double)sum/geShu);
获取所有的水仙花数
//1 获取所有的水仙花数
// 三位数 各个位数的值的三次方之和等于此数
//使用循环 把所有的三位数跑完
int n=100;
while(n<1000) {
//判断当前n是不是水仙花数
//获取当前n各个位数的值
int a=n/1%10,b=n/10%10,c=n/100%10;
//获取更改位数值的三次方之和
int sum=a*a*a+b*b*b+c*c*c;
//判断sum是不是等于当前n
if(sum==n) {
System.out.println(n+"是水仙花数!");
}
n++;//迭代语句
}
获取1到10000内的所有完数
//判断一个数是不是完数
//n的所有因子之和等于n 那n就是完数
//因子:如果n%m==0&&m!=n m就是n的因子 ,约数
//如:12 1+2+3+4+6=16 不是完数
// 6 1+2+3=6 是完数
//n的因子取值范围:[1,n/2]
//使用循环让变量m从1跑到n/2 循环判断m是不是n的因子 是 就加入sum中
int n=1;//定义变量记录要判断的数据
while(n<=10000) {
int sum=0;//定义变量记录和
//定义变量m 让其从1跑到n/2
int m=1;
while(m<=n/2) {
if(n%m==0) {
sum+=m;
}
m++;
}
//所有的m跑完 通过判断sum是不是n 来判断n是不是完数
if(n==sum) {
System.out.println(n+"是完数!");
}
n++;
}
判断一个数是不是质数:
//判断一个数是不是质数:
//质数:只能被1和其本身整除的数 1不是质数
//n :可以整除n的数的取值范围是:[2,n/2]
//使用循环让变量m从2开始 一直跑到n/2 循环判断m是否可以整除n
//只要有一次整除 n就不是质数
int n=1;//定义变量记录要判断的数据
//使用循环让变量m从2跑到n/2
int m=2;
boolean b=true;//定义一个变量 作为标签
while(m<=n/2) {
//循环判断m是否可以整除n
if(n%m==0) {
//被除尽 就更改标签的值
b=false;
}
m++;
}
//循环完后 通过判断标签的值是不是更改 来判断m是否除尽过n 进而判断n是不是质数
if(n!=1&&b==true) {
System.out.println(n+"是质数!");
}else {
System.out.println(n+"不是质数!");
}
do-while
/*do-while
*do{
* 循环体(循环执行的代码块)
*}while(条件表达式);
*
* while(条件表达式){
* 循环体(循环执行的代码块)
* }
*
* 区别: dowhile 是先执行 后判断 ;至少执行一次
* while 先判断后执行 ;可能一次也不执行
* */
int a;
a=10;
while(a<5) {
System.out.println("while a="+a);
a++;
}
a=10;
do {
System.out.println("do ----while a="+a);
a++;
}while(a<5);
for
//for和while完全等价:格式不同
/*for(初始化语句;条件表达式;迭代语句){
* 循环体(条件表达式成立时执行的代码块)
*}
*初始化语句:用于定义变量、给变量赋初始值的语句
*
*while(条件表达式){
* 循环体(条件表达式成立时执行的代码块)
* 迭代语句
*}
* */
for和while的比较
//求1到100内的和
{
int sum=0;
int n=1;
while(n<=100) {
sum=sum+n;
n++;
}
System.out.println("1到100内的和====="+sum);
}
{
int sum=0;
for(int n=1;n<=100;n++) {
sum+=n;
}
System.out.println("1到100内的和="+sum);
}
//上面的while和for 过程、代码、结果 完全相同 只是代码的位置不同
特殊情况
//for特殊情况: 初始化语句 条件表达式 迭代语句 都可以省略
// 条件表达式省略:默认是true
for (;;) {
System.out.println("----循环体---");
}
for相关变量的作用域
//一个变量的作用域取决于定义此变量的括号
//for循环中相关变量的作用域
{
int a=1;//变量a:在main方法的大括号内定义的 作用域为整个main方法
for (int b = 1; b<5; ) {//变量b:在for循环的初始化语句中定义的 作用域为整个for循环
int c=1;//变量c:在for循环的循环体中定义的 作用域为本次for循环
System.out.println("a="+a+",b="+b+",c="+c);
a++;b++;c++;
}
System.out.println("a="+a);
}
求1到100内所有的质数
//获取1到100内所有的质数
{
//定义一个变量让其从1跑到100
for (int n = 1; n <=100; n++) {
//判断当前n是不是质数
boolean b=true;//定义一个变量 作为标签
//使用循环让一个变量m从2跑到n/2
for (int m =2; m <=n/2; m++) {
//循环判断m是否除尽n
if(n%m==0) {
b=false;//如果n被m除尽 就更改标签的值
}
}
//循环完后 通过判断标签的值是否更改 来判断n是否被m除尽过 进而判断n是不是质数
if(n!=1 && b==true) {
System.out.println("n==="+n+",是质数!!");
}
}
}
99乘法表
System.out.println("123298766"+'\t');//\t制表符 给对应数据显示8n个字符的位置
System.out.println("123\n123");//\n换行符号
for (int i =1; i <=5; i++) {//外层for循环变量i的取值范围决定行数
for (int j = 1; j <= i; j++) {//内层for循环变量j的取值范围决定本行的列数
System.out.print(i+"::"+j+"\t");
}
System.out.println();
}
二:break-continue
public class Demo06BreakContinue {
public static void main(String[] args) {
/*跳转:
* break+continue
* break使用场景1:switch 结束switch结构
* 使用场景2:用在循环中 结束本层循环
* continue使用场景1:用在循环中 结束本次for循环 继续++ 进行下次循环
*
* */
for (int a =1; a < 10; a++) {
System.out.println("a="+a);
if(a==4) {break;}
}
System.out.println("----");
for (int a = 1; a <5; a++) {
for (int b = 1; b < 5; b++) {
System.out.println("a="+a+":::b="+b);
if(b==3) {
break;//结束本次for循环
}
}
}
System.out.println("----如果结束两层for循环 方式1");
for (int i =1; i < 10; i++) {
boolean b=true;
for (int j =1; j < 10; j++) {
if(i==3&&j==3) {
b=false;
break;
}
System.out.println("i="+i+"---j="+j);
}
if(b==false) {
break;
}
}
System.out.println("----如果结束两层for循环 方式2");
a:for (int i =1; i < 10; i++) {
boolean b=true;
for (int j =1; j < 10; j++) {
if(i==3&&j==3) {
b=false;
break a;
}
System.out.println("i="+i+"-------j="+j);
}
}
System.out.println("---------测试continue----");
for (int i = 1; i <10; i++) {
if(i==3) {
continue;//结束本次for循环 继续++ 进行下次循环
}
System.out.println("continue i="+i);
}
System.out.println("---获取1到100内所有不能被3或者7整除数的和");
int sum=0;
for (int n =1; n <=100; n++) {
if(n%3==0||n%7==0) {
continue;
}
sum+=n;
}
System.out.println("----判断一个数是不是质数");
int n=1;
int m=2;
for (; m
if(n%m==0) {
break;
}
}
//如果结束循环是通过不满足m
//如果结束循环是通过break 此时m
if(n==m) {
System.out.println(n+"是质数!");
}else {
System.out.println(n+"不是质数!");
}
}
}
标签:java,04,int,sum,System,学习,while,println,out
来源: https://blog.csdn.net/qq_45893905/article/details/112481083