Java流程控制

JAVA流程控制
用户交互Scanner

java.util.Scanner是java5的新特征,我们可以通过Scanner类来获取用户的输入。

基本语法为:

Scanner s=new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入字符串,用hasNext()与hasNextlin()判断是否还有输入的数据。
next():

  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  4. next()不能得到带有空格的字符串

netxtLine():

  1. 以Enter为结束符,也就是说nextLine()返回的输入回车之前的所有字符。
  2. 可以获取空白。

示例1:

System.out.println("scanner的hasNext方法测试:-----------");
        if(a.hasNext()==true) {
            String str = a.next();
            /*
              hasNext获取的已空格为分隔,空格以后不再获取
             * */
            System.out.println("你输入的值为:" + str);//输出值为:你输入的值为:hello
        }
        a.close();// io流都需要在完成使用后结束关闭,不然会一直占用资源

示例2:

        Scanner a=new Scanner(System.in);
        System.out.println("请输入字符串");
        if(a.hasNextLine()){
            String v=a.nextLine();//hasNextline是已回车键作为 分隔
            /*
            *  请输入字符串
               ss a v
                你输入的字符串为:ss a v
            * */
            System.out.println("你输入的字符串为:"+v);
        }
        a.close();

示例3:获取数入数字

 System.out.println("请输入整数:");
        if(a.hasNextInt()){
           int b=a.nextInt();//程序会等待用户数入完毕
           /*
            *请输入整数:
            * 20
            * 你输入的整数值为:20
            * */
           System.out.println("你输入的整数值为:"+b);
        } else
        {
            System.out.println("请注意你输入的非整数值");
              }
        a.close();

示例4:结合循环求数入个数及和

   Scanner a=new Scanner(System.in);
      int    b=0;
      float  sum=0.0f;
      System.out.println("请输入要累加的金额");
      while (a.hasNextFloat())//数入字符串结束
      {
       float v=a.nextFloat();
             sum+=v;
             b++;
      }
      /*请输入要累加的金额
      10
      29
      33
      ss
      你输入的累计金额为:72.0
      你输入金额次数:3
      */
      System.out.println("你输入金额次数:"+b);
      System.out.println("你输入的累计金额为:"+sum);
      a.close();
  }

实例5:

Scanner a=new Scanner(System.in);

    System.out.println("请数入整数");
    if(a.hasNextInt()){
        int c=a.nextInt();
        System.out.println("你输入的整数为:"+c);
    }
    else {
        System.out.println("你数入的不是整数");
    }
      System.out.println("请数入小数:");
        if(a.hasNextFloat()){
           float x=a.nextFloat();
            System.out.println("你输入的小数为:"+x);
        }else {
            System.out.println("你数入的不是小数");
        }
      a.close();
//输出结果1;
请数入整数
1.1
你数入的不是整数
请数入小数:
你输入的小数为:1.1
//输出结果2:
请数入整数
1
你输入的整数为:1
请数入小数:
1
你输入的小数为:1.0

顺序结构
  • java的基本机构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构
  • 语句与语句之间,框与框之间是按从上到下的顺序进行。他是任何一个算法都离不开的基本结构
选择结构

if单选择结构

if双选择结构

public static void main(String args[])
    {
        int a =50;
        if(a>60){
            System.out.println("你的分数及格");

        }else
            {
            System.out.println("你的分数不及格");

if多选择结构

 public static void main(String args[]){
     /** 选择结构 if多分支,
     * if语句中至多有1个else语句,else语句在所有else if       语句之后
     * if可以有多个else if语句,语句检测为true,其他的       else if以及else语句都跳过执行
     */
        int a=143;
        if(a>=90&&a<=100){
         System.out.println("你的分数评定为优");
        }else if(a<90&&a>=80){
            System.out.println("你的分数评定为良");
        }
        else if(a<80&&a>=70){
            System.out.println("你的分数评定为中");
        }
        else if(a<70&&a>=60){
            System.out.println("你的分数评定为及格");
        }
        else if(a<60&&a>=0){
            System.out.println("你的分数评定为差");
        }
        else
        {
            System.out.println("你的分数异常");

嵌套if结构

switch多选择结构

多选择结构还有一个方式就是switch case语句

语法:

switch(expression){
            case value:
            //语句
            break;//可选 如果未写break会case穿透
            case value:
                   //语句
            break;//可选
                  //你可有任意多的case语句
            default:
               //语句法");
  • switch语句中的表里类型可以是:
  1. byte,short,int或者char.
  2. 从java se7开始支持String 类型比较
  3. 同时case标签必须为字符串常量或者字面量

eg1:case穿透现象

 int  a=4;
        System.out.println("switch循环开始-------------------------");
        /*
        case穿透
        输出:
        switch循环开始-------------------------
       你输入的值为4
       你输入的值为4
       录入数值不合法
       switch循环结束------------------------
        * */
        switch(a){
            case 1:
            System.out.println("你输入的值为1");
            case 2:
                System.out.println("你输入的值为2");
            case 3:
                System.out.println("你输入的值为3");
            case 4:
                System.out.println("你输入的值为4");
            case 5:
                System.out.println("你输入的值为5");
            default:
                System.out.println("录入数值不合法");
循环结构
  • while循环
     while(布尔表达式){
         //循环内容
     }

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

大部分情况需要让循环停止,我们需要一个让表达式实习的方法来结束循环

少部分循环一直执行,比如服务器的监听

  • do....循环

与while循环相似,不同的是do..while至少执行一次

语法:

 do {
       //语句
        }while(布尔表达式);
  • for 循环

for循环语句是支持迭代的一种通用结构,是最有效,最灵活的结构。for循环执行的次数是在执行前就确定的

语法:

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

eg1:

/*
关于for循环,
最先执行初始化步骤,可以声明一种类型,单可以初始化一个或多个循环控制变量,也可以是空语句
然后检测布尔值表达式的值,如果为true,循环被执行,如果为false,循环终止。开始执行循环体后面语句
执行一次循环后,更新循环控制变量
再次检查布尔表达式,循环执行上面过程
*/
//死循环
for(;;){
    
}

eg2:

    public static void main(String args[]){

       for(int i=1;i<10;i++) {
           for (int j=1;j<=i;j++) {
               System.out.print( j+ "*" + i + "=" + j * i+"\t");
           }
           System.out.println();
       }
/*
输出99乘法表
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
*/
  • 增强for循环

java5引入了一种主要用于数组或集合的增强for循环

语法格式

for (声明语句:表达式)

{
    //代码
}

声明语句:声明变量类型必须和数组类型匹配

表达式:表达式是要访问的数组,或者要返回值为数组的方法

eg1:

   public  static  void main(String args[]){
        int a[]={1,2,3,4,5,6};
        //遍历数组元素
        for (int b:a){
            System.out.println(b);

        }
break &continue
  • break在任何循环语句的主题补发,均可用break控制循环的流程,break用于强行退出循环,不执行循环剩余的语句(break语句也在switch中使用)。

  • continue语句在循环语句体中,用于终止某次循环过程,即t跳过循环体中尚未执行的语句,接着执行下一次是否循环的判定。

  • goto关键字

    1. goto仍然是java的保留字,但并未在语句中正式使用。:java没有goto等于带标签的break和continue
    2. 标签"标签"是指后面跟一个符号的标识符.例如label;
    3. 对Java来说以为用到标签的地方是循环语句前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只能终端当前循环,但若同标签使用,他们就会终中断到存在标签的地方。
    **
                     *
                     * label标签
                     * 输出1-100所有质数
                     * 质数:只能被1合本身整除
                     * 自然数不是合数就是质数
                     * 如果一个数能被它的最小质因数整除,那它肯定是合数,及不是质数。所以判定一个数是否质数
                     * 只需要判断它是否能被小于开根号后的所有整数整除,
                     * */
                        public static void main(String[] args) {
                             //标签
                            outer:for (int a = 101; a <= 150; a++) {
                                for (int j = 2; j < a / 2; j++) {
                                    if (a % j == 0) {
                                        continue outer;
                                    }
               //输出: 101	103	107	109	113	127	131	137	139	149	
                }
                System.out.print(a + "\t");
            }
        }
    
posted @   翻滚的小井蛙  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示