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)

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 小程序开发文档

    小程序开发文档

  • intellij idea最新版安装步骤_学生用idea用哪个版本好

    intellij idea最新版安装步骤_学生用idea用哪个版本好1、首先在官网上面下载idea网址:https://www.jetbrains.com/idea/2、选择下载DownLoad3、下载可能需要注册,不需要理会,等待下载界面出来就行了4、双击下载好的ideaIU-2018.3.4.exe文件,选择next5、自定义设置安装目录6、按照下面的勾选就行了7、点击install,等待安装成功就行了…

  • linux安装yarn

    linux安装yarn这里介绍使用yum的方式:先要安装node.js,用node-v可以查看是否安装了node。1、添加yarn仓库wgethttps://dl.yarnpkg.com/rpm/yarn.repo-O/etc/yum.repos.d/yarn.repo2、安装yarnyum-yinstallyarn安装完成后,yarn-v可以查看版本。…

  • 常见的路由协议「建议收藏」

    常见的路由协议「建议收藏」常见的路由协议可以分为两种类型一、内部网关协议内部网关协议(IGP:InteriorGatewayProtocol),适用于单个ISP的统一路由协议的运行,一般由一个ISP运营的网络位于一个AS(自治系统)内,有统一的ASnumber(自治系统号),用来处理内部路由。RIP、IGRP(Cisco私有协议)、EIGRP(Cisco私有协议)、OSPF、IS-IS等都是内部网关协议。1、…

    2022年10月22日
  • Protel 99SE详细安装教程(附安装包)[通俗易懂]

    Protel 99SE详细安装教程(附安装包)[通俗易懂]安装步骤:安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。安装前请断网。试装系统:win1064bit1.解压安装包。2.以管理员身份运行Protel99SE文件夹里的安装程序。3.点击下一步。4.name和company随便输入,打开SerialNO.txt,将serialNO输入到安装界面的code栏中。5.选择好安装目录(不要出现中…

  • QML入门教程:一、QML和QtQuick简介以及QML实例

    QML入门教程:一、QML和QtQuick简介以及QML实例从Qt4.7开始,Qt引入了一种声明式脚本语言,称为QML(QtMetaLanguage或者QtModelingLanguage),作为C++语言的一种替代。而QtQuick就是使用QML构建的一套类库。QML是一种基于JavaScript的声明式语言。在Qt5中,QML有了长足进步,并且同C++并列…

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

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