首页 > 编程语言 > 详细

Java流程控制

时间:2021-02-17 10:36:07      阅读:27      评论:0      收藏:0      [点我收藏+]

Java流程控制

 

1用户交互Scanner

Scanner基础

  • java.util.Scanccer:通过Scanner获取用户的输入。

  • 基本语法:Scanner s = new Scanner(System.in);

  • 通过Scanner类的next()和nextLine()方法获取输入的字符串,

  • 在读取前一般需要用haNext()和hasNextLine()判断是否还有输入的数据。

  • next:

    一定读到有效字符

    有效字符前空白无效

    有效字符后空白作为分隔符或者结束符

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

    package com.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();
      }
    }

    技术分享图片

  • nextLine:

    以Enter为结束符

    nextLine()方法返回的是输入回车键前的所有字符

    可以获得空白

    package com.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();
      }
    }

    技术分享图片

    Scanner进阶

    //assignment: 输入多个数字,并求其和和平均值,每输入一个数字用回车确认,输入非数字结算书输入并输出执行结果
    ?
    public class Base2self3 {
       
       public static void main(String[] args) {
           
           //定义循环次数、和
           int m = 0;
           double sum = 0;
           
           //创建scanner
           System.out.println("输入数据");
           Scanner scanner = new Scanner(System.in);
           
           //循环语句:通过循环判断是否还有输入,并在里面对每一次进行统计
           while (scanner.hasNextDouble()){
               double x = scanner.nextDouble();
               m = m + 1;
               sum = sum + x;
               System.out.println("第"+m+"次"+",当前和:"+sum+",当前平均值:"+ sum / m);
          }
           System.out.println("第"+m+"次结束");
           System.out.println("总和为"+sum);
           System.out.println("平均值为"+ sum / m);
    ?
           scanner.close();
      }
    }

     

 

2顺序结构

Java最基本结构

最简单算法结构

从上到下一次运行

 

3选择结构

有else if 必须有else作为结束

if单选择结构

判断是否可行,然后再执行

语法:

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

 

if双选择结构

判断是否可行,两个判断结果

语法:

if(布尔表达式){
   //布尔表达式true将执行的语句
}else{
   //布尔表达式false将执行的语句
}    

 

if多选择结构

语法:

if(布尔表达式1){
   //布尔表达式1为true时执行操作
}else if(布尔表达式2){
   //布尔表达式2为true时执行操作
}else if(布尔表达式3){
   //布尔表达式3为true时执行操作
}else{
   //上述布尔表达式为false时执行操作
}    

试验

package com.struct;
?
import java.util.Scanner;
?
//if多选择结构
public class Demo04 {
   public static void main(String[] args) {
?
       System.out.println("谁创造了人类?");
?
       Scanner scanner = new Scanner(System.in);
?
       while (scanner.hasNextLine()) {
?
           String x = scanner.nextLine();
?
           if (x.equals("女娲")) {
               System.out.println("不大行");
          } else if ((x.equals("普罗米修斯")) || (x.equals("Prometheus"))) {
               System.out.println("也不大行");
          } else if ((x.equals("亚当和夏娃")) || (x.equals("Adam and Eve"))) {
               System.out.println("还不大行");
          } else if (x.equals("道")) {
               System.out.println("接近真理");
          } else if ((x.equals("上帝")) || (x.equals("God")) || (x.equals("god"))) {
               System.out.println("放屁");
          } else if ((x.equals("劳动")) || (x.equals("labor"))) {
               System.out.println("放臭屁");
          } else if (x.equals("自然") || x.equals("大自然") || x.equals("nature") || x.equals("自然界")) {
               System.out.println("正确");
          } else {
               System.out.println("我觉得这不大行");
          }
      }
       scanner.close();
  }
}
//if多选择结构
public class Demo05 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入你的成绩 (输入非数字结束运行)");
?
       while (scanner.hasNextInt()) {
           int x = scanner.nextInt();
           if (x == 100) {
               System.out.println("S 恭喜你满分");
          } else if (x < 100 && x >= 90) {
               System.out.println("A 非常好,向满分发起进攻");
          } else if (x < 90 && x >= 80) {
               System.out.println("B 努力呀,争取变得更好");
          } else if (x < 80 && x >= 70) {
               System.out.println("C 一般般,要努力了");
          } else if (x < 70 && x >= 60) {
               System.out.println("D 考的啥玩意儿,你也想整花活吗");
          } else if (x > 100) {
               System.out.println("SB 滚蛋 瞎jb输入的莫得蛋蛋");
          } else if (x < 0) {
               System.out.println("DSB 不错不错 你还能更低 ");
          } else {
               System.out.println("hxd 咱没及格呀,不如找个场子上班吧");
          }
      }
       System.out.println("祝你好运");
       scanner.close();
  }
}

 

嵌套的if结构

语法:

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

 

 

 

switch多选择结构

限制:byte\short\int\char\String

语法:

switch(expression){
    case value:
        //语句
        break;//可选
    case value:
        //语句
        break;//可选
        //……任意数量的case语句
    default://可选
        //语句
}

示例:

package com.struct;
?
import java.util.Scanner;
?
//switch介绍
public class Demo06 {
   public static void main(String[] args) {
       //case穿透:无break不会停
       //switch 匹配一个具体的值
       /*JDK7新特性:switch表达式结果可以是String类型
       字符本质还是数字
       反编译:方法:hashCode
        */
       System.out.println("请输入你的等级");
       Scanner scanner = new Scanner(System.in);
?
       char grade = scanner.next().charAt(0);
?
       switch (grade){
           case ‘A‘:
               System.out.println("优秀");
               break;
           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("错误");
      }
  }
}

 

4循环结构

while 循环

语法:

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

只要布尔表达式为true,循环将一直执行

大多数情况要循环停止,需要一个让表达式失效的方式

少部分情况需要死循环

while:先判断后执行

示例:

package com.struct;
//while 循环
 //题目:计算:1+2+...+100
public class Demo07 {
   public static void main(String[] args) {
?
       int i = 0;
       int sum = 0;
?
       while (i<100){
           System.out.println("——————————————————————————");
           i++;
           sum = sum + i;
           System.out.println("now i = "+i);
           System.out.println("now sum = "+sum);
      }
       System.out.println("=======================");
       System.out.println("total "+i+" times");
       System.out.println("1+2+...+100 = "+sum);
  }
}
//5050

 

do…while 循环

对即使不满足条件的语句也至少执行一次

do…while:先执行后判断

 

语法:

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

示例:

package com.struct;
//do...while 循环
public class Demo08 {
   public static void main(String[] args) {
?
       int i = 0;
       int sum = 0;
?
       do{
           System.out.println("——————————————————————————");
           sum = sum + i;
           i++;
           System.out.println("now i = "+i);
           System.out.println("now sum = "+sum);
?
      }while(i<=100);
?
       System.out.println("=======================");
       System.out.println("total "+i+" times");
       System.out.println("1+2+...+100 = "+sum);
  }
}

 

 

for 循环

最重要的循环语句

更简单的循环语句

语法:

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

最先执行初始化步骤,可以为空;

然后检测布尔表达式的值,可以为空;

 

 

 

示例:

//for 语句
public class Demo09 {
   public static void main(String[] args) {
       int i = 1;//初始化条件
       int sum = 0;
?
       for (i = 1; i<=100; i++){   //快捷键,100.for+Enter
           //初始化//条件判断//迭代
           sum += i;
           System.out.println("—————————————————————");
           System.out.println(i);
           System.out.println(sum);
      }
       System.out.println("=======================");
       System.out.println("Final result is " + sum);
  }
}

 

练习1.分别计算0~100间奇数/偶数的和

package com.struct;
//练习1.分别计算0~100间奇数/偶数的和
public class Demo11 {
?
   public static void main(String[] args) {
?
       int oddSum = 0;
       int evenSum = 0;
       int todd = 1;
       int teven = 0;
       int t;
?
       //自己的操作
       for (;todd<=100;todd+=2){
           oddSum += todd;
      }
?
       for (;teven<=100;teven+=2){
           evenSum += teven;
      }
?
       System.out.println("奇数的和为"+oddSum);
       System.out.println("偶数的和为"+evenSum);
?
       oddSum = 0;
       evenSum = 0;
?
       System.out.println("————————————————————————");
       //最优的操作
       for (int i = 0; i <= 100; i++) {
           if (i%2 == 0){
               evenSum += i;
          }else{
               oddSum += i;
          }
      }
       System.out.println("·奇数的和为"+oddSum);
       System.out.println("·偶数的和为"+evenSum);
       
  }
}

 

练习2.循环输出1-1000之间能被5整除的数,每行输出3个;

package com.struct;
//练习2.循环输出1-1000之间能被5整除的数,每行输出3个;
public class Demo12 {
   public static void main(String[] args) {
?
       //for循环:
       System.out.println("\n"+"===========================");
       System.out.println("for循环结果:");
       for (int i = 1; i <= 1000; i++){
           if (i%5 == 0){
               System.out.print(i+"\t");
          }
           if (i%(3*5) == 0){
               System.out.print("\n");
          }
      }
?
       //while循环:
       System.out.println("\n"+"===========================");
       System.out.println("while循环结果:");
       int m = 0;
       while (m <= 1000){
           m++;
           if (m%5 == 0){
               System.out.print(m + "\t");
          }
           if (m%(3*5) == 0){
               System.out.print("\n");
          }
      }
?
       //do while循环:
       System.out.println("\n"+"===========================");
       System.out.println("do while循环结果:");
?
       int n = 0;
?
       do {
           n++;
           if (n%5 == 0){
               System.out.print(n + "\t");
          }
           if (n%(3*5) == 0){
               System.out.print("\n");
          }
      }while (n<1000);
       
  }
}

print():输出完不换行

printLn():输出完换行

 

练习3.打印9×9乘法表

package com.struct;
//练习3.打印9×9乘法表
//嵌套for循环
public class Demo13 {
   public static void main(String[] args) {
?
       int x = 1;
       int y = 1;
?
       System.out.println("九 九 乘 法 表");
       System.out.println("——————————————————————————————————————————————");
?
       for (; x <= 9; x++){
?
           for (y = 1; y <= x; y++){
               System.out.print(y + "×" + x + "=" + x*y + "\t");
?
               if (y == x){
                   System.out.println();
              }
          }
      }
  }
}

 

增强for循环

语法:

for(声明语句:表达式)
{
   //代码句子
}

 

 

 

5break&continue

break

用break控制循环的流程:

break用于强行退出循环,不执行循环中剩余的语句

package com.struct;
//break
public class Demo15 {
   public static void main(String[] args) {
?
       int i = 0;
       while (i<100){
           i++;
           System.out.println(i);
           if (i==30){
               break;
          }
      }
       System.out.println("stop");
  }
}

 

continue

用于终止某次循环,接着进行下一次循环

package com.struct;
//continue
public class Demo16 {
   public static void main(String[] args) {
       int i = 0;
       while (i<100){
           i++;
           if (i%10==0){
               System.out.println("——————");
               continue;  //返回至while循环
          }
           System.out.println(i);
      }
  }
}

 

goto

保留字

label:定位

package com.struct;
//练习4:打印101~150间所有质数
public class Demo17 {
   public static void main(String[] args) {
?
       int count = 0;
?
       outer:for (int i = 101;i<150; i++){
           for (int j =2; j < i/2; j++){
               if (i % j==0){
                   continue outer;
              }
          }
           System.out.println(i + " ");
      }
  }
}

 

 

 

综合练习:

package com.struct;
//打印三角形:5行
public class Demo18 {
?
   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("*");
          }
           for (int j = 5; j > i; j--){
               System.out.print(" ");
          }
?
?
           System.out.println();
?
      }
  }
}

 

Java流程控制

原文:https://www.cnblogs.com/jyttt/p/14408259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!