Day05 JavaSE

31 阅读2分钟

今日重点 循环结构

一.循环

重复做多次相同或有规律的事情

1.while循环--先判断后执行

1.语法结构

while(布尔表达式){
循环体;
}

循环流程:布尔表达式的值有两个,一个是真,一个是假,为真的时候进入循环,循环体执行之后再次判断布尔表达式,若布尔表达式不成立,跳出循环.

package com.bjsxt;  
  
public class Test01 {  
public static void main(String[] args) {  
int i=1;//初始化一个变量  
while(i<=20){//设置循环条件  
System.out.println("hello world"+i);//循环体  
i++;//循环体  
}  
}  
}

2.死循环

//布尔表达式里面的值一直为true,就一直执行
while(true){
}

3.小节实战案例

//求1~100的和
package com.bjsxt;  
  
public class Test03 {  
public static void main(String[] args) {  
int i=1;  
int sum=0;  
while(i<=100){  
sum+=i;  
i++;  
  
}  
System.out.println(sum);  
}  
}

推荐代码运行完之后使用debug跑一下,代码流程更加清晰!

2.do while

1.do while循环--先执行一次,再判断

语法:
do{
循环体;//先走这里
}while(布尔表达式);

2.总结:while与do-while的区别

  1. while循环先判断再循环,循环体可能一次也没执行,也可能执行了多次。
  2. do-while循环先执行再判断,循环体至少执行一次
  3. 两种循环效率上没有差别

3.小节实战案例

//分支语句用switch
package com.bjsxt;  
  
import java.util.Scanner;  
  
public class Test05 {  
public static void main(String[] args) {  
String name="";  
double price=0.0;  
System.out.println("欢迎使用建议超市管理系统");  
System.out.println();  
Scanner sc=new Scanner(System.in);  
do{  
System.out.println("请选择您的操作");  
System.out.println("1.录入商品");  
System.out.println("2.查看商品");  
int num=sc.nextInt();  
switch(num){  
case 1:  
System.out.println("请输入商品名称");  
name=sc.next();  
System.out.println("请输入商品的价格");  
price=sc.nextDouble();  
case 2:  
System.out.println("商品名称:"+name+"价格"+price);  
break;   
}    
}while(true);    
}  
}
//分支语句用if else
package com.bjsxt;  
  
import java.util.Scanner;  
  
public class Test06 {  
public static void main(String[] args) {  
System.out.println("欢迎使用简易超市管理系统");  
System.out.println();  
String name="";  
double price=0.0;  
do{  
System.out.println("请选择你的操作");  
System.out.println("1.录入商品");  
System.out.println("2.查看商品");  
Scanner sc=new Scanner(System.in);  
int num=sc.nextInt();  
if(num==1){  
System.out.println("请输入商品名称");  
name=sc.next();  
System.out.println("请输入商品的价格");  
price=sc.nextDouble();  
}else if(num==2){  
System.out.println("商品名称:"+name+"价格"+price);  
  
  
}else{  
System.out.println("请输入有效编号");  
}  
}while(true);  
}  
}

3.for循环

1.语法结构

for(初始表达式(变量初始化);布尔表达式(循环的判断条件);迭代因子(循环的迭代条件)){
循环体;}

快捷键:fori自动生成for循环

2.小结

package com.bjsxt;  
  
public class Test07 {  
public static void main(String[] args) {  
for(int i=0;i<=20;i++){  
System.out.println("hello world"+i);  
}  
}  
}

3.break return continue

☞ break:结束当前正在执行的循环 ☞ return:结束当前正在执行的方法 ☞ continue:跳出某次循环

4.练习

package com.bjsxt;  
//从键盘录入10个整数,统计有多少个奇数  
import java.util.Scanner;  
  
public class Test08 {  
public static void main(String[] args) {  
Scanner sc=new Scanner(System.in);  
int count=0;  
for(int i=0;i<10;i++){  
System.out.println("请输入第"+(i+1)+"个整数");  
int a=sc.nextInt();  
if(a%2==1){  
System.out.println("奇数"+a);  
count++;  
}  
}  
System.out.println("一共有"+count+"个奇数");  
}  
}


package com.bjsxt;  
//从键盘录入10整数,如果录入了一个0,则提前停止录入,统计已经录入了多少个奇数  
import java.util.Scanner;  
  
public class Test09 {  
public static void main(String[] args) {  
Scanner sc=new Scanner(System.in);  
int count=0;  
for(int i=0;i<10;i++){  
System.out.println("请输入第"+(i+1)+"个数");  
int a=sc.nextInt();  
if(a==0){  
System.out.println("输入的数为0,循环结束");  
break;  
}  
if(a%2!=0){  
System.out.println("奇数"+a);  
count++;  
}  
}  
System.out.println("一共有"+count+"个奇数");  
}  
  
}


package com.bjsxt;  
//1+2+3....+100,当和超过3000时退出循环(break), 同时输出加到了第多少位  
public class Test10 {  
public static void main(String[] args) {  
int sum=0;  
for(int i=0;i<=100;i++){  
sum+=i;  
if(sum>3000){  
System.out.println("此时的和>3000,为第"+i+"位");  
break;  
}  
}  
System.out.println(sum);  
}  
}

package com.bjsxt;  
//使用continue实现输出1--100直接能被5整除的数  
public class Test11 {  
public static void main(String[] args) {  
for(int i=0;i<=100;i++){  
if(i%5!=0){  
continue;  
}  
System.out.println(i);  
}  
  
}  
}

5.多重循环

外层循环一次,内层循环一轮

6.练习

package com.bjsxt;  
//打印9*9  
public class Test12 {  
public static void main(String[] args) {  
for(int i=1;i<=9;i++){  
for(int j=1;j<=i;j++){  
System.out.print(j+"*"+i+"="+(j*i)+" ");  
}  
System.out.println();  
}  
}  
}
package com.bjsxt;  
  
public class Test13 {  
public static void main(String[] args) {  
for(int i=1;i<=9;i++){  
for(int j=1;j<=9;j++){  
System.out.print(i+"*"+j+"="+(i*j)+"\t");  
}  
System.out.println();  
}  
}  
}
package com.bjsxt;  
  
public class Test14 {  
public static void main(String[] args) {  
for(int i=1;i<=9;i++){  
for(int j=i;j<=9;j++){  
System.out.print(i+"*"+j+"="+(i*j)+"\t");  
}  
System.out.println();  
}  
}  
}

7.标记

标记的用法:通过内层循环去结束外层循环

 public static void main(String[] args) {
     o:for (int i = 1; i <= 9; i++) {
         for (int j = 1; j <=i ; j++) {
             if(i ==5){
                 break o;
                 //continue o;
             }
             System.out.print(j+"*"+i+"="+i*j+"\t");
         }
         System.out.println();
     }
     System.out.println("执行结束");
 }