java基础四(switch;for;while;do...while;break;continue;return)

switch语句
           (1)格式:
                   switch(表达式) {
                        case 值1:
                                   语句体1;
                                   break;
                        case 值2:
                                  语句体2;
                                  break;
                         ...
                        default:
                                  语句体n+1;
                                  break;
                  }

         格式解释说明:
               switch:说明这是switch语句。
               表达式:可以是byte,short,int,char
                    JDK5以后可以是枚举
                    JDK7以后可以是字符串
              case:后面的值就是要和表达式进行比较的值
              break:表示程序到这里中断,跳出switch语句
              default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
       (2)面试题
               switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
               可以,不可以,JDK7以后可以
      (3)执行流程:
               A:首先计算表达式的值
               B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。

               C:如果没有匹配,就执行default的语句体n+1。


     (4)注意事项:
               A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
               B:default可以省略吗?
                     可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
               特殊情况:
                      case就可以把值固定。
                                   A,B,C,D
               C:break可以省略吗?
                     可以省略,但是结果可能不是我们想要的。
                    会出现一个现象:case穿透。
                    最终我们建议不要省略
               D:default一定要在最后吗?
                        不是,可以在任意位置。但是建议在最后。
               E:switch语句的结束条件
                       a:遇到break就结束了
                       b:执行到末尾就结束了
       (5)案例:
               A:键盘录入一个数字(1-7),输出对应的星期几。
               B:单项选择题
               C:键盘录入一个字符串的问题
                             String s = sc.nextLine();

               D:根据给定的月份,输出对应的季节

import java.util.Scanner;


public class SwitchDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入一个整数1-7");
		int week = scan.nextInt();
		switch(week){
			case 1:
				System.out.println("今天是星期一");
				break;
			case 2:
				System.out.println("今天是星期二");
				break;
			case 3:
				System.out.println("今天是星期三");
				break;
			case 4:
				System.out.println("今天是星期四");
				break;
			case 5:
				System.out.println("今天是星期五");
				break;
			case 6:
				System.out.println("今天是星期六");
				break;
			case 7:
				System.out.println("今天是星期七");
				break;
			default:
				System.out.println("您输入的数据有误");
		}
	}

}

         (6)if语句和switch语句各自的场景
                  A:if针对boolean类型的判断
                        针对一个范围的判断
                        针对几个常量的判断
                  B:switch
                        针对几个常量的判断


循环语句
              (1)有三种:for,while,do...while
             (2)for循环语句
                         A:格式
                                  for(初始化语句;判断条件语句;控制条件语句){
                                            循环体语句;
                                    }

                         执行流程:
                                  a:执行初始化语句
                                  b:执行判断条件语句
                                             如果这里是true,就继续
                                             如果这里是false,循环就结束
                                 c:执行循环体语句
                                 d:执行控制条件语句

                                 e:回到b


                                 B:注意事项
                                          a:判断条件语句无论简单还是复杂,结果是boolean类型
                                          b:循环体语句如果是一条,可以省略大括号,但是不建议
                                          c:有分号就没有左大括号,有左大括号就没有分号
                                 C:案例

                                          a:输出10次HelloWorld

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=1;i<=10;i++){
			System.out.println("HelloWorld");
		}
			
	}

}

                                          b:输出1-10的数据

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=1;i<=10;i++){
			System.out.println(i);
		}
			
	}

}

                                          c:输出10-1的数据

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=10;i>=1;i--){
			System.out.println(i);
		}			
	}

}

                                          d:求1-10的和

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		for(int i=1;i<=10;i++){
			sum=sum+i;
		}
		System.out.println("1-10的和为:"+sum);
			
	}

}

                                          e:求1-100的和,求1-100的偶数和,求1-100的奇数和

public class Demo1 {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		int evensum=0;
		int unevensum=0;
		for(int i=1;i<=100;i++){
			sum=sum+i;
		}			
		System.out.println("1-100的和为:"+sum);
		for(int i=1;i<=100;i+=2){
			unevensum+=i;
		}
		System.out.println("1-100的奇数和为:"+unevensum);
		for(int i=2;i<=100;i+=2){
			evensum+=i;
		}
		System.out.println("1-100的偶数和为:"+evensum);
	}
}

                                          f:求5的阶乘

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=1;
		for(int i=1;i<=5;i++){
			sum=sum*i;
		}			
		System.out.println("5的阶乘为:"+sum);
	}

}

                                          g:在控制台打印水仙花数

public class Demo1 {
/*
 水仙花数:是指一个三位数,其各位数字的立方和等于该数本身
 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=100;i<=999;i++){
			int bai = i/100;
			int shi = i%100/10;
			int ge = i%100%10;
			if(Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge,3)==i){
				System.out.println("水仙花数有:"+i);
			}	
		}				
	}

}

                                          h:统计水仙花个数

                                          i:改进版的回文数
                                                 一个五位数
                                                     个位 = 万位
                                                     十位 = 千位

                                                     个位 + 十位 + 千位 + 万位 = 百位

public class Demo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=10000;i<=99999;i++){
			int ge = i%10;
			int shi = i/10%10;
			int bai = i/10/10%10;
			int qian = i/10/10/10%10;
			int wan = i/10/10/10/10%10;
			if(ge==wan && shi==qian && ge+shi+qian+wan==bai){
				System.out.println(i);
			}	
		}				
	}

}

                                               j:统计1-1000之间同时满足如下条件的数据有多少个
                                               x%3==2
                                               x%5==3

                                               x%7==2

public class Demo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int count = 0;
		for(int i=1;i<=1000;i++){
			if(i%3==2 && i%5==3 && i%7==2){
				count +=1;
			}	
		}	
		System.out.println("1-1000之间满足数据的个数:"+count);
	}

}

         (3)while循环
                  A:基本格式
                        while(判断条件语句) {
                                   循环体语句;
                        }

              扩展格式:
                      初始化语句;
                      while(判断条件语句){
                               循环体语句;
                               控制条件语句;
                      }

             通过查看这个格式,我们就知道while循环可以和for循环等价转换。
             B:while的练习
                         把for语句的练习用while改进
             C:for和while的区别
                         a:使用上的区别
                                    for语句的那个控制条件变量,在循环结束后不能在使用了。

                                    而while的可以继续使用。

                              如果想在循环结束之后,继续使用控制条件的那个变量,用while循环,否则用for循环,因为变量及早的从内存中中消失,可以提高内存的使用效率

                         b:理解上的区别
                                    for适合于一个范围的判断
                                    while适合次数不明确的
                             
            D:案例:

                       a:珠穆朗玛峰问题

public class Demo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int height=884800;
		int start=1;
		int count=0;
		while(start<height){
			start*=2;
			count++;
		}
		System.out.println("需要叠多少次"+count);
	}

}

                       b:小芳存钱问题(break以后才能做)


      (4)do...while循环
             A:基本格式
                    do {
                       循环体语句;
                       }while(判断条件语句);

                   扩展格式:
                     初始化语句;
                            do {
                                  循环体语句;
                                  控制条件语句;
                            }while(判断条件语句);

                 通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。
           B:三种循环的区别
                   a:do...while循环至少执行一次循环体
                   b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
     (5)循环使用的注意事项(死循环)
              A:一定要注意修改控制条件,否则容易出现死循环。
              B:最简单的死循环格式
                           a:while(true){...}

                           b:for(;;){}

打印九九乘法表

public class Demo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(j+"*"+i+"="+i*j+"\t");
			}
			System.out.println("");
		}
	}

}

控制跳转语句
         (1)break:中断的意思
                  A:用在循环和switch语句中,离开此应用场景无意义。不能独立使用。
                  B:作用
                           a:跳出单层循环
                           b:跳出多层循环,需要标签语句的配合
         (2)continue:继续
                  A:用在循环中,离开此应用场景无意义。
                  B:作用
                           a:跳出单层循环的一次,可以继续下一次
                 C:填空题
                           for(int x=1; x<=10; x++) {
                                  if(x%3 == 0) {
                                       //补齐代码
                                  }
                                  System.out.println("Java");
                           }

                 如何让控制台输出2次:Java

                             break;

                 如何让控制台输出7次:Java

                            continue;

                 如何让控制台输出13次:Java

                             System.out.println("java");

       (3)return:返回
                A:用于结束方法的,后面还会在继续讲解和使用。
                B:一旦遇到return,程序就不会在继续往后执行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值