Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto

Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto流程控制用户交互Scanner类实现程序和人的交互java.util.ScannerScanner 类 获取用户的输入next() 获取下一个字符nextLine()获取下一行next()以空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止next()不能得到带有空格的字符串package scanner;import java.util.Scanner;public class Demo01 { public

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

流程控制

用户交互Scanner类

  • 实现程序和人的交互

  • java.util.Scanner

  • Scanner 类 获取用户的输入

  1. next() 获取下一个字符
  2. nextLine()获取下一行

next()

以检测到用户输入的空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止。

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

hasNext()

用来检测是否还有下一个输入,返回布尔值

close()

用于使用完毕Scanner对象后,关闭输入流

package scanner;

import java.util.Scanner;

public class Demo01 { 
   
    public static void main(String[] args){ 
   

       //创建一个扫描对象
       // 先new一个Scanner 参数为System.in :
       // new Scanner(System.in); 按alt+enter 自动创建本地变量
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next()方法接收");
        //输入hello world 只能接收到hello 因为中间有空格

        //判断用户后面还有没有输入字符
        if(scanner.hasNext()==true){ 
   
            //使用next()方法接收
            String str=scanner.next();//输入hello world
            System.out.println("输入内容为"+str);//只能接受到hello
        }

        scanner.close();//用完scanner要关闭,节省资源

        //凡是属于IO流的类要养成用完就关掉的习惯
        }
}

####nextLine();

以检测到用户输入回车enter 为结束符,可以获得空格。

hasNextLine()

用来检测是否还有下一行输入,返回布尔值

package 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()==true){ 
   
            String str=scanner.nextLine();//输入hello world
            System.out.println("输出的内容为:"+str);//接收到hello world
        }

        scanner.close();
    }
}

常规还是用nextLine(),并且一般不用判断是否后面还有数据,用一个字符串对象接收nextLine()获取的值

public class Demo03 { 
   
    public static void main(String[] args) { 
   
        //从键盘接受(可以不判断用户是否还有下一个输入)
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据:");

        String str = scanner.nextLine();

        System.out.println("您输入的内容为:\n"+str);

        scanner.close();
    }
}

接受指定类型的数据——nextInt()nextDouble()

package scanner;
import java.util.Scanner;
public class Demo04 { 
   
    public static void main(String[] args) { 
   
		//新建一个扫描器对象
        Scanner scanner=new Scanner(System.in);
        int i=0;
        float f=0.0f;//记住 float 类型要末尾加 f与 double区别

		
        System.out.println("请输入整数:\n");
        //接收一个整数,如果不是整数就不会接收
        if(scanner.hasNextInt()){ 
   
            i=scanner.nextInt();
            System.out.println("整型数据"+i);
        }
        else{ 
   
            System.out.println("你输入的不是整数");
        }
        
		//接收一个单精度浮点数,如果不是就不会接收
        System.out.println("请输入小数:\n");
        if(scanner.hasNextFloat()){ 
   
            f=scanner.nextFloat();//如果此处输入了整数,会自动转换为浮点数
            System.out.println("小数数据"+f);
        }
        else{ 
   
            System.out.println("你输入的不是小数");
        }

 scanner.close();
    }
}

一个小案例
输入多个数据,计算总和,平均数。每输入一个数字用回车确认,输入非数字结束。

package scanner;
import java.util.Scanner;
public class Demo05 { 
   
    public static void main(String[] args){ 
   
        
        System.out.println("请输入数据");
        Scanner scanner = new Scanner(System.in);

        //求和
        double sum=0;
        //计数
        int m=0;

        //通过循环判断是否还有输入,并对每一次输入进行求和统计
        while(scanner.hasNextDouble()){ 
   
            double x = scanner.nextDouble();
            m++;
            sum=sum+x;//sum+=x
            System.out.println("你已经输入"+m+"个数,当前和为:"+sum+",当前平均值为:"+sum/m);
        }
        System.out.println("你一共输入"+m+"个数");
        System.out.println(m+"个数的和为"+sum);
        System.out.println(m+"个数的平均数为"+sum/m);

        scanner.close();

程序的结构

  • 顺序结构

  • 选择结构(分支结构)

    • if-else

    • if——else if——else if——else if——else

      (else必须在 else if 之后)

  • switch-case

public class Demo06 { 
   
    public static void main(String[] args){ 
   

        char grade='M';

        switch(grade){ 
   
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            default:
                System.out.println("未知等级");
            case 'D':
                System.out.println("不及格");
                break;
//switch的每种情况顺序是不影响的,程序会自动匹配;
//匹配不到时会选择default
//只有遇到break才退出,不然向下继续执行
//efault中没有break,程序也会继续向下执行
        }
    }
}
  • switch支持String字符串常量匹配——可以用“名字”作为匹配项

  • 字符串的本质还是数字

  • switch后面的括号内只能用常量,不能是变量


反编译

IDEA自带反编译方法

.java——编译后——.class文件(字节码文件)——反编译(使用IDEA)——.java

具体方法如下

请添加图片描述
请添加图片描述

循环结构——功能:迭代

  • while 用于不知道循环次数,有时候也用于死循环——监听,检查

  • for 用于已知循环次数——最有效,最灵活

要注意程序执行顺序
for(初始化循环变量;条件判断;自增自减){循环体}

  1. 最先初始化(仅第一次)
  2. 然后条件判断
  3. 然后循环体
  4. 最后自增自减,然后下一轮条件判断
  • for(;;)三个参数可以分别没有,也可都没有——死循环


小练习
输出1-1000内能被5整除的数,每行仅输出3个

public class Demo08 { 
   
    public static void main(String[] args){ 
   
        for (int i = 0; i < 100; i++) { 
   
            if(i%5==0){ 
   
                System.out.print(i+"\t"); 
                //每输出一个数隔开一个tab
            }
            if(i%5*3==0){ 
      
                System.out.println();
                //没输出三个数,输出一个换行
                //也可以System.out.print("\n");
            }
        }
    }
}

println和print的区别,前者会自动换行


小练习:
for循环打印九九乘法表

public class Demo09 { 
   
    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+"="+i*j);
                System.out.print("\t");
            }
            System.out.println();
        }
    }
}

增强for

  • 用于遍历数组、对象

  • IDEA快捷键——对象.for

  • 格式
    for(临时变量类型 变量名 :需要遍历的数组或对象){循环体操作}

    public class Demo10 { 
         
        public static void main(String[] args) { 
         
            int[] numbers={ 
         10,20,30,4,50};//数组的定义
            for(int x:numbers){ 
             
                System.out.println(x);
            }
        }
    }
    

判断字符串是否与另一个字符串相等
(仅仅比较值是否相等,不能比较引用)

str.equals(“hello”)


break,continue

  • break——终止循环,退出

  • continue——不执行循环内continue后面的语句,跳过本轮循环,继续下一次循环


goto关键字”在java中的影子
Java中本来没有goto 关键字——用标签来实现跳转,通过continue跳转到指定标签位置(仅作了解——不建议使用)

以下程序再最外层循环设置了标记outer,方便continue跳出

public class Demo11 { 
   
    public static void main(String[] args) { 
   
       outer: for(int i=1;i<20;i++){ 
   
            for(int j=2;j<i/2;j++){ 
   
                if(i%j==0){ 
    //此处求质数的算法再理解一下 备注到下方
                    continue outer;
                }
            }
        }
    }
}

notes:
质数是大于1的自然数中,只能被1和本身整除的数


小练习:
打印如图所示三角形 在这里插入图片描述

  • 思路:最外层循环控制换行,先打印左边空白倒着的半三角,再打印左边一半的 * 三角,最后打印右边一半的 * 三角。
public class Demo12 { 
   
    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();
        }
    }
}

快捷打开window绘图软件
(win+R——mspaint)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168488.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 抖音视频下载爬虫编写的完整过程!爬取app的过程

    抖音视频下载爬虫编写的完整过程!爬取app的过程

    2022年3月7日
    40
  • Hibernate学习笔记:hibernate二级缓存攻略

    Hibernate学习笔记:hibernate二级缓存攻略
     hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
    二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_class,我们这里用ehcache,在2.1中就是
    hibernate.cache.provider_class=

    2022年5月23日
    57
  • 鸿蒙三部曲为什么不写第四部,“鸿蒙三部曲”比“斗罗四作”评分高,为何动画人气远远不如?…

    鸿蒙三部曲为什么不写第四部,“鸿蒙三部曲”比“斗罗四作”评分高,为何动画人气远远不如?…“鸿蒙三部曲”与“斗罗四作”相信熟悉玄幻小说的朋友对于“鸿蒙三部曲”比“斗罗四作”是哪几部就很熟悉了,但更多的是熟悉“斗罗四作”,《斗罗大陆》、《斗罗大陆2:绝世唐门》、《斗罗大陆3:龙王传说》、《斗罗大陆4:终极斗罗》,出自大神作家唐家三少之手。对于“鸿蒙三部曲”就很陌生了,这三部曲分别是:《盘龙》、《星辰变》、《吞噬星空》。这三部小说同样出自大神作家,我爱吃西红柿之手。在2008年的时候,“鸿…

    2022年6月16日
    116
  • virsh 虚拟机迁移目录_虚拟机迁移的六个步骤

    virsh 虚拟机迁移目录_虚拟机迁移的六个步骤简介虚拟机迁移主要分为两种:静态迁移和动态迁移静态迁移是指在虚拟机关闭或暂停的情况下,将源宿主机上虚拟机的磁盘文件和配置文件拷贝到目标宿主机上。这种方式需要显式的停止虚拟机运行,对服务可用性要求高的需求不合适。动态迁移无需拷贝虚拟机配置文件和磁盘文件,但是需要迁移的主机之间有相同的目录结构放置虚拟机磁盘文件,可以通过多种方式实现,本例采用基于共享存储动态迁移,通过NFS来实现。操作环境服

    2022年8月11日
    2
  • ATM(异步传输模式)是什么?

    ATM(异步传输模式)是什么?异步传输模式(ATM)也称为信元中继(在固定大小的信元中传输数据),通过光纤或双绞线电缆(高速交换)在OSI模型的数据链路层(第2层)运行基于ITU-T宽带综合业务数字网络(B-ISDN)标准的网络技术,该标准是电信业开发的自动取款机可以同时传输各种流量:语音、视频和数据,速度高达每秒155兆比特。它将语音和视频数据转换成数据包,并通过相同的介质传输大数据包数据。自动取款机和TCP。由于两个端点之间使用固定通道路由协议路由,所以/IP是不同的。实时低延迟应用程序,如VoIP和视频,在ATM网络上..

    2022年9月21日
    0
  • 用递归函数求斐波那契数列_利用递归求斐波那契数列

    用递归函数求斐波那契数列_利用递归求斐波那契数列函数递归求斐波那契数列//函数递归求斐波那契数列//编写程序,求数列1,1,2,3,5,8,13,21,……//思路://第一步:找出表示数列第N项的递归公式:F(N)=F(N-1)+F(N-2)//第二步:递归的结束条件,当N=1或N=2时,F(N)=1;longintFib(intn){ if(n<=2) return1; else returnFib(n-1)+Fib(n-2); //拿n=3带入一下,第一个返回值为1第二个返回值1

    2022年9月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号