Java流程控制

Java流程控制

用户交互Scanner

  • java.util.Scanner使用这个包中Scanner类获取用户的输出

  • 基本语法

 Scanner s = new Scanner(System.in);
  • 通过Scanner类的next() 与 nextLine() 方法获取输入的字符串,在读取前我们要使用hasNext() 与 hasNextLine()判断用户是否还有输入的数据

next():

  • 一定要读取到有效字符后才可以结束输出

  • 对于输入有效字符之前遇到的空白,next()方法会自动去除

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

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

 package com.arbedu.scanner;
 ​
 import java.util.Scanner;
 ​
 public class Demo01 {
 ​
     public static void main(String[] args) {
         //创建一个扫描器对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
 ​
         System.out.println("使用next方法接收:");
 ​
         //判断用户有没有输入字符串
         if (scanner.hasNext()) {
             String str = scanner.next();
             System.out.println("输入的内容为:" + str);
         }
         //凡是属于IO流的类如果不关闭就会一直占用资源,要养成习惯用完就关掉
         scanner.close();
 ​
     }
 }
 ​

输入:Hello world

输出: Hello

nextLine()

  • 以Enter(回车)为结束符,返回输入回车之前的所有字符

  • 可以获得空白

 package com.arbedu.scanner;
 ​
 import java.util.Scanner;
 ​
 public class Demo02 {
     public static void main(String[] args) {
         // 从键盘接收数据
         Scanner scanner = new Scanner(System.in);
 ​
         System.out.println("使用nextLine()方法接受:");
         // 判断是否还有输入
         if(scanner.hasNextLine()) {
             String str = scanner.nextLine();
             System.out.println("输出的内容为:" + str);
         }
 ​
         scanner.close();
 ​
     }
 }
 ​

输入:Hello world

输出:Hello world

顺序结构

Java的基本结构

顺序结构是最简单的算法结构

从上到下

选择结构

if单选择结构

 package com.arbedu.structure;
 ​
 import java.util.Scanner;
 ​
 public class ifDemo01 {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
 ​
         System.out.println("请输入内容:");
         String s = scanner.nextLine();
 ​
         //equals:判断字符串是否相等
         if(s.equals("Hello")) {
             System.out.println(s);
         }
         System.out.println("End");
 ​
 ​
         scanner.close();
     }
 }
 ​

if双选择结构

 package com.arbedu.structure;
 ​
 import java.util.Scanner;
 public class ifDemo02 {
     public static void main(String[] args) {
         // 考试分数大于60分及格,小于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多选择结构

 package com.arbedu.structure;
 ​
 import java.util.Scanner;
 ​
 public class ifDemo03 {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
 ​
         int score = scanner.nextInt();
         //其中一个else if 为true 其他语句不执行
         if (score == 100) {
             System.out.println("恭喜满分");
         }else if(score < 100 && score >= 90){
             System.out.println("A");
         }else if(score < 90 && score >= 80){
             System.out.println("B");
         }else if(score < 80 && score >= 70){
             System.out.println("C");
         }else if(score < 70 && score >= 60){
             System.out.println("D");
         }else if(score < 60 ){
             System.out.println("不及格");
         }else {
             System.out.println("成绩不合法");
         }
     }
 }
 ​

嵌套if结构

 if() {
     if() {
         
     }
 }

switch语句

 package com.arbedu.structure;
 ​
 public class switchDemo01 {
     public static void main(String[] args) {
         char grade = 'C';//JDK7新特性 switch可以识别string 利用反编译 hashcode
         switch (grade) {
             case 'A':
                 System.out.println("优");
                 break;// 打破 不执行后续case及default
             case 'B':
                 System.out.println("良");
                 break;
             case 'C':
                 System.out.println("中");
                 break;
             case 'D':
                 System.out.println("阅");
                 break;
             case 'E':
                 System.out.println("再接再厉");
                 break;
             default:
                 System.out.println("未知");
                 break;
         }
     }
 }
 ​

循环结构

while循环

  • 基本格式

 while (布尔表达式) {
 // 循环体
 }
  • 实例

 package com.arbedu.structure;
 ​
 public class WhileDemo01 {
     public static void main(String[] args) {
         // 输出1 - 100
         int i = 0;// 初始化
         //条件判断
         while (i < 100) { 
             i++; //迭代 循环体
             System.out.println(i); //循环体
         }
     }
 }
 ​
  • 死循环

 package com.arbedu.structure;
 ​
 public class WhileDemo02 {
     public static void main(String[] args) {
         while (true) {
             // 等待客户端连接
             // 定时检查
             // while(true)是死循环 除非是特殊需求,一般情况下避免死循环,会影响程序性能或是系统卡死崩溃
         }
     }
 }
 ​
  • 求和练习

 package com.arbedu.structure;
 ​
 public class WhileDemo03 {
     public static void main(String[] args) {
         // 计算1+2+3+...+100
         int i = 1;
         int sum = 0;
         while (i <= 100) {
             sum += i;
             i++;
         }
         System.out.println(sum);
     }
 }
 ​

do-while循环

至少执行1次

 package com.arbedu.structure;
 ​
 public class DoWhileDemo01 {
     public static void main(String[] args) {
         int i = 0;
         int sum = 0;
       do {
           sum = sum + i;
           i++;
       }while(i <= 100);
       System.out.println(sum);
     }
 }
 ​
  • while和do-while比较

 package com.arbedu.structure;
 ​
 public class DoWhileDemo02 {
     public static void main(String[] args) {
         int a= 0;
         while(a<0){
             System.out.println(a);  // 无输出结果
             a++;
 ​
         }
         System.out.println("=================");
 ​
         do{
             System.out.println(a);  //输出0
             a++;
 ​
         }while(a<0);
     }
 }
 ​

For循环

 package com.arbedu.structure;
 ​
 public class ForDemo01 {
     public static void main(String[] args) {
         int a = 1;  //初始化
 ​
         while(a <= 100) {
             System.out.print(a+" ");  //循环体
             a++;   //迭代
 ​
         }
         System.out.println("while循环结束");
 ​
         // 写for的快捷方式:长度.for再回车 本代码可以用100.for
       
         for (int i = 1; i <= 100; i++) {
             System.out.print(i+" ");
         }
         System.out.println("for循环结束");
         // for死循环
         /*for(; ;) {
             
         }
         */
     }
 }
 ​

for循环练习题

 package com.arbedu.structure;
 ​
 public class ForDemo02 {
     public static void main(String[] args) {
         //练习1:计算0到100之间奇数和偶数和
         int oddSum = 0;
         int evenSum = 0;
 ​
         for (int i = 0; i <= 100; i++) {
             if (i % 2 == 0) {// 偶数
                 evenSum += i;
             }else {//奇数
                 oddSum += i;
             }
 ​
         }
         System.out.println("奇数的和"+oddSum);
         System.out.println("偶数的和"+evenSum);
     }
 }
 ​
 package com.arbedu.structure;
 ​
 public class ForDemo03 {
     public static void main(String[] args) {
         // 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个
 ​
         for (int i = 1; i < 1000; i++) {
             if (i % 5 == 0) {   // 能被5整除
                 System.out.print(i+"\t");   //让结果更整齐
             }
             if(i % 15 == 0) {   // 每行输出三个:每过增加15(3 * 5)就换行
                 System.out.println();   //换行 System.out.print("\n");也行
             }
         }
 ​
     }
 }
 ​
 package com.arbedu.structure;
 ​
 public class ForDemo04 {
     public static void main(String[] args) {
         // 练习3:打印99乘法表
     /*
     1 * 1 = 1
     1 * 2 = 2   2 * 2 = 4
     1 * 3 = 3   2 * 3 = 6   3 * 3 = 9
     ...
     规律:每行都从1到本行数截至 第二个乘数即为行数
      */
      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();
      }
     }
 }
 ​
 package com.arbedu.structure;
 ​
 public class TestDemo {
     public static void main(String[] args) {
         // 打印三角形
         /*
              *
             ***
            *****
           *******
          */
         for (int i = 1; i <= 5; i++) {
             for (int j = 5; j >= i; 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();       // 换行
         }
                                         //可以自行调试理解本章循环的量的变化
 ​
 ​
 ​
     }
 }
 ​

增强for

 package com.arbedu.structure;
 ​
 public class ForDemo05 {
     public static void main(String[] args) {
         int[] arr = {1,2,3,4,5,6,7,8,9,10}; // 定义了一个数组
 ​
         // 增强for 用于遍历数组与集合
         for (int x:arr) {
             System.out.println(x);
         }
         System.out.println("=====================");
 ​
         // 普通for
         for (int i = 0; i < 10; i++) {
             System.out.println(arr[i]);
         }
     }
 }
 ​

break & continue

break

 package com.arbedu.structure;
 ​
 public class BreakDemo01 {
     public static void main(String[] args) {
         int i = 0;
         while(i < 100) {
             i++;
             System.out.println(i);
             if(i == 30) {
                 break;  // 打破循环 不执行循环体内剩余语句(switch语句也常用)
             }
         }
         System.out.println("123"); //仍然执行
     }
 }
 ​
 package com.arbedu.structure;
 ​
 public class ContinueDemo01 {
     public static void main(String[] args) {
         int i = 0;
 ​
         while (i < 100) {
             i++;
             if(i %10 == 0) {
                 System.out.println();   //使缺少的数字清晰可见
                 continue;   // 终止本次循环 不执行本次循环剩余语句 执行下一次循环
             }
             System.out.println(i);
         }
     }
 }
 ​

goto关键字 label(不建议使用)

 package com.arbedu.structure;
 ​
 public class LabelDemo01 {
     public static void main(String[] args) {
         // 打印101 - 105 的质数
 ​
         int count = 0;
     // 不建议使用label
       outer:for(int i = 101; i < 150; i++) {
             for (int j = 2; j < i / 2; j++) {
                 if (i % j == 0) {   //判断质数
                     continue outer;
                 }
             }
           System.out.print(i + " ");
 ​
       }
     }
 }
 ​

你可能感兴趣的:(java,开发语言)