Java流程控制

Java流程控制

  • 用户交互Scanner
  • 顺序结构
  • 选择结构
  • 循环结构
  • break&continue
  • 练习

Scanner对象

通过Scanner类来获取用户的输入

  1. 语法
    • Scanner s = new Scanner (System.in);//system.in输入out输出
    • 通过hasNext()或者hasNextLine()判断是否还有输入的数据
    • 通过next()或者nextLine()获取输入的字符串,其中next不能得到带有空格的字符串,忽略有效字符前遇到的空格,有效字符后的空格座位分隔符或结束符.
      nextLine输入一行以Enter为结束符,可以获得空格
	Scanner scanner = new Scanner(System.in);
	if(scanner.hasnext()){
		//会等待用户输入,
		String str = scanner.next();
		System.out.println("输入内容位",str);
	}
	//***凡是属于IO流的类如果不关闭就会一直占用资源,用完要关闭,写scanner就先也把关闭写上***
	scanner.close;
  1. 其他方法
    hasNextInt(),nextInt();
  2. 应用
    输入多个数字,求总和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果
	Scanner scanner =  new Scanner(System.in);
	//和用double标识,可以接收整数小数,后面也用hasnextDouble来判段,非数字停止
	double sum = 0;
	//输入个数
	int m = 0;

	while(scanner.hasNextDouble()){
		sum+=scanner.nextDouble();
		m++;
	}
	System.out.println(m + "个数的和为"+sum);
	System.out.println(m + "个数的平均值为" + sum/m);
	scanner.close();

三种结构

  1. 顺序结构--java的基本结构就是顺序结构,从上到下

  2. 选择结构--if-else,switch (注意程序要严谨,考虑输入越界情况)
    switch 语句中的变量类型可以是byte,short,int或者char.
    从JDK7开始switch支持字符串String类型,case标签必须为字符串常量或字面量
    每个case后要有break,否则会出现case穿透现象匹配后面都执行了
    扩展--字符的本质还是数字的
    反编译 java---class 用IDEA就可以反编译class文件(直接把class文件丢到IDEA里)
    IDEA里打开工程键,可以看到项目输出的class文件保存的位置。
    在IDEA里打开文件夹直接打入class文件,文件图标上显示01会自动反编译。可以看到case里原本循环的字符串都对应一个hashcode数字值。

  3. 循环结构--while/do...while/for (java5中引入数组的增强型for循环)
    while(true)死循环,一直运行用于服务器监听等待客户端连接,定时检查
    for循环高效灵活,在执行前就确定了执行次数,在IDEA里直接可以100.for写出循环100次的for循环
    for(;;)初始化,判断条件和迭代都可以时空,此时为死循环

    • 应用1:
      0到100之间的奇数和,偶数和
   int evenSum = 0;
   int oodSum = 0;
   for(int i = 0; i<=100;i++){
   	if (i%2 == 0){
   		evenSum+=i;
   	}else{
   		oodSum+=i;
   	}
   }
  • 应用2:
    用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个 [%(5*3]
    for(int i = 0; i <= 1000; i++){
    if(i%5 ==0){
       System.out.print(i+"\t");
    }
    if (i%(5*3)==0){
       System.out.println();//或者print("\n")换行
    }
    }
  • 应用3打印99成分表:
	/* 拆分问题1.先打印出第一列
		2.外面嵌套循环打印出来多行
		3.去掉重复的 i<=j
		4.调整样式
	*/	
	
	for(int j = 1; j <= 9; j++){
		for(int i = 1; i <= j; i++){
			System.out.print(j + "*" + i + "=" + j*i + "\t")
		}
	}
  1. 增强for循环
    jdk5引入,主要用于数组或者集合的增强型for循环,简化for循环为了偷懒,把数组或者集合里的值依次复制给前面的变量进行循环.
   int[] numbers ={10m20,30,40,50};

   for(int x:numbers){
   	System.out.println(x);
   }

5.break & continue
break强制退出循环,continue跳过当前这次循环,继续下次循环
6.goto
java基本不用,使用label:+continue来完成
打印101-150之间所有质数

   outer:for(int i = 101; i < 150; i++){
   	for (int j = 2; j < i/2; j++){
   		//如果非质数,跳出循环到label outer处,继续执行下一次循环
   		if(i%j==0){
   			continue outer;
   		}
   	}
   	System.out.print(i+ "\t");

7.练习打印一个5行的三角形

思路三角形分成两半打印,然后想象三角形外面有个正方形,先从多到少打印空格,然后在打印*左边的直角三角形。
最后再打印右边的三角形

	for(int i = 1; i<=5; i++){
		for(int j = 1; j <= 5; j++){
			System.out.print(" ");
		}
		for(int j = 1; j <= i; j++){
			System.out.print("*");
		}
		for(int j = 1; j < i; j++){
			System.out.print("*");
		}
		System.out.println();		
	}

详情看bilibili 狂神说java

posted @ 2021-01-14 21:40  晒网达人  阅读(70)  评论(0)    收藏  举报