Java流程控制

用户交互Scanner

java.util.Scanner是Java 5的新特性,可以通过Scanner类来获取用户输入

 Scanner s = new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串,读取前一般使用hasNext()与hasNextLine()判断是否还有输入的数据

next():

  1. 一定要读取到有效字符后才可以结束输入

  2. 对输入有效字符之前遇到的空白,next()方法将其自动去掉

  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

  4. next()不能得到带有空格的字符串

 package scanner;
 
 import java.util.Scanner;
 
 public class Demo01 {
     public static void main(String[] args) {
         //创建一个Scanner对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in); //Hello World!
 
         System.out.println("使用next方式接收:");
 
         //判断用户有没有输入字符串
         if(scanner.hasNext()) {
             String str = scanner.next();
             System.out.println(str);   //Hello
        }
 
         //凡是属于IO流的类如果不关闭会一直占用资源,应该用完就关掉
         scanner.close();
    }
 }

nextLine():

  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

  2. 可以获得空白

 package scanner;
 
 import javax.sound.midi.Soundbank;
 import java.util.Scanner;
 
 public class Demo02 {
     public static void main(String[] args) {
         //从键盘接收数据
         Scanner scanner = new Scanner(System.in);  //Hello World!
 
         System.out.println("使用nextLine方式接收:");
 
         //判断是否还有输入
         if(scanner.hasNextLine()) {
             String str = scanner.nextLine();
             System.out.println(str);   //Hello World!
        }
 
         scanner.close();
    }
 }
 package scanner;
 
 import java.util.Scanner;
 
 public class Demo03 {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
 
         //从键盘接收数据
         int i = 0;
         float f = 0.0f;
 
         System.out.println("请输入整数:");
 
         if(scanner.hasNextInt()) {
             i = scanner.nextInt();
             System.out.println("整数数据: "+i);
        } else {
             System.out.println("输入的不是整数数据!");
        }
 
 
         System.out.println("请输小数:");
 
         if(scanner.hasNextFloat()) {
             f = scanner.nextFloat();
             System.out.println("小数数据: "+f);
        } else {
             System.out.println("输入的不是小数数据!");
        }
 
         scanner.close();
    }
 }
 package scanner;
 
 import java.util.Scanner;
 
 public class Demo04 {
     public static void main(String[] args) {
         //输入多个数字,求其和与平均数,每输入一个数字用回车确认,输入非数字结束输入
         Scanner scanner = new Scanner(System.in);
 
         //和
         double sum = 0;
         //计算输入了多少个数字
         int m = 0;
 
         //通过循环判断是否还有输入,并计算和和统计个数
         while(scanner.hasNextDouble()) {
             double x = scanner.nextDouble();
             m += 1;
             sum += x;
        }
 
         System.out.println(m+"个数的和是:"+sum);
         System.out.println(m+"个数的平均值是:"+(sum/m));
 
         scanner.close();
    }
 }

 

顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则按照顺序一句一句执行。它是任何一种算法都离不开的基本算法结构

 

选择结构

if单选择结构

 if(布尔表达式) {
     //如果布尔表达式为true将执行的语句
 }

 

if双选择结构

 if(布尔表达式) {
     //如果布尔表达式为true将执行的语句
 } else {
     //如果布尔表达式为false将执行的语句
 }
 package struct;
 
 import java.util.Scanner;
 
 public class Demo01 {
     public static void main(String[] args) {
         //考试分数大于60则及格,否则不及格
         Scanner scanner = new Scanner(System.in);
 
         System.out.println("请输入成绩:");
         int score = scanner.nextInt();
 
         if(score > 60) {
             System.out.println("及格");
        } else {
             System.out.println("不及格");
        }
 
         scanner.close();
    }
 }

 

if多选择结构

 if(布尔表达式1) {
     //如果布尔表达式1为true执行的代码
 } else if(布尔表达式2) {
     //如果布尔表达式2为true执行的代码
 } else if(布尔表达式3) {
     //如果布尔表达式3为true执行的代码
 } else {
     //如果以上布尔表达式都不为true时执行的代码
 }

 

嵌套的if结构

 if(布尔表达式1) {
     //如果布尔表达式1为true执行代码
     if(布尔表达式2) {
         //如果布尔表达式2为true执行代码
    }
 }

 

switch选择结构

 switch(expression) {
     case value:
         //语句
         break;
     case value:
         //语句
         break;
     default:
         //语句
 }

switch语句中的变量类型可以是:byte,short,int,char,从Java SE 7 开始,switch支持字符串String类型。case标签必须为字符串常量或字面量

 

循环结构

while循环

 while(布尔表达式) {
     //循环内容
 }

只要布尔表达式为true,循环就会一直执行下去

我们大多数情况需要循环停止下来,需要一个让表达式失效的方式来结束循环

少部分情况需要循环一直执行,比如服务器的请求响应监听等

循环条件一直为true会造成死循环,正常业务中应尽量避免死循环,因为会影响程序性能或造成程序卡死崩溃

 package struct;
 
 public class Demo02 {
     public static void main(String[] args) {
         //输出1-100
         int i = 0;
 
         while(i < 100) {
             i++;
             System.out.println(i);
        }
    }
 }
 package struct;
 
 public class Demo03 {
     public static void main(String[] args) {
         //计算1+2+···+100
 
         int i = 0;
         int sum = 0;
 
         while(i < 100) {
             i++;
             sum += i;
        }
 
         System.out.println(sum);
    }
 }

 

do……while循环

 do {
     //代码语句
 }while(布尔表达式);

while语句:如果不满足条件,不能进入循环

do…while语句:即使不满足条件,也至少执行一次

 package struct;
 
 public class Demo04 {
     public static void main(String[] args) {
         //计算1+2+···+100
 
         int i = 0;
         int sum = 0;
 
         do {
             i++;
             sum += i;
        }while(i < 100);
 
         System.out.println(sum);
    }
 }

 

for循环

 for(初始化;布尔表达式;更新) {
     //代码语句
 }

for循环是最有效,最灵活的循环结构

 package struct;
 
 public class Demo05 {
     public static void main(String[] args) {
         int a = 1;                 //初始化条件
 
         while(a <= 100) {          //条件判断
             System.out.println(a); //循环体
             a += 2;                //迭代
        }
 
         System.out.println("while循环结束!");
 
         for (int i = 1; i <= 100; i++) {
             System.out.println(i);
        }
 
         System.out.println("for循环结束!");
    }
 }
 package struct;
 
 public class Demo06 {
     public static void main(String[] args) {
         //输出1-1000之间能被5整除的数,且每行输出3个
 
         for (int i = 1; i <= 1000; i++) {
             if(i%5 == 0) {
                 System.out.print(i+"\t");
            }
             if(i%15 == 0) {
                 System.out.println();
            }
        }
    }
 }
 package struct;
 
 public class Demo07 {
     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+"="+i*j+"\t");
            }
             System.out.println();
        }
    }
 }

 

增强for循环

 package struct;
 
 public class Demo08 {
     public static void main(String[] args) {
         int[] numbers = {10,20,30,40,50};
 
         for (int i = 0; i < 5; i++) {
             System.out.println(numbers[i]);
        }
 
         System.out.println("===================================");
 
         //遍历数组的元素
         for (int x:numbers) {
             System.out.println(x);
        }
    }
 }

 

break & continue

break用于强行退出循环,不执行循环中剩余的语句(break也可在switch中使用)

continue语句终止某次循环过程,接着判定下一次循环是否执行

 

练习

 package struct;
 
 public class Test {
     public static void main(String[] args) {
         //打印三角形 5行
         for (int i = 0; i < 5; i++) {
             for (int j = 5; j >= i; j--) {
                 System.out.print(" ");
            }
 
             for (int j = 1; j <= 2*i+1; j++) {
                 System.out.print("*");
            }
             System.out.println();
        }
    }
 }

 

posted @   南嘉lu  阅读(148)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示