首页 > 其他分享 >第二章节 控制流 01 scanner和m=m++的问题

第二章节 控制流 01 scanner和m=m++的问题

时间:2022-09-04 23:35:08浏览次数:63  
标签:01 Scanner ++ 控制流 System println out scanner

第二章节 控制流 01 scanner和m=m++的问题

用户交互Scanner(扫描器)

用完就要关掉I/O流会占用很多资源

需要创建Scanner对象

Scanner scanner = new Scanner(System.in);

通过Scanner类的next() nextLine()获取输入的字符

hasNexthasNextLine()判断是否有输入的字符

其中的区别是Next是一个单词遇到空格/回车停止,nextLine是一行单词遇到回车停止

案例

package Scanner;

import java.util.Scanner;

public class Demo06 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入字符");

        boolean b = scanner.hasNext();  	//暂停

        System.out.println(b);				//值为true

        System.out.println("===============================================");

        if(scanner.hasNext()){	  		//	再次判断有无输入,因为has不会读走字符,所以现在还是hello world在输入流中
            String str = scanner.next();  	//带走了字符
            System.out.println(str);		//输出到屏幕

            System.out.println("===============================================");

            boolean z = scanner.hasNext();	//判断有无输入此时是world
            String s = scanner.next();    
            System.out.println(s);
            System.out.println(z);

        }

        scanner.close();

    }

}

image-20220904222205700

重输出结果来看当程序运行到hasNext()时会暂停等待输入,而且判断的时候不会读走字符,但是Next()会走字符

next还有很多其他的扩展 包括nextInt(),nextDouble(),nextbyte()...

今日问题

今天在学习的时候发现了一个问题

    public static void main(String[] args) {
        int i = 0;
        for (;i<10;i++){
            int m = 0;
            m=m++;
            System.out.println(m);
        }
    }

他的结果居然是全0的!!!

他的逻辑是这样的 m++并不是在使用完后直接+1,他是先将m的值复制到一个临时区,然后对临时的值+1,最后再返回m。

而代码中的m=m++;

执行步骤是

  1. 先复制m到赋值的临时区
  2. 复制m+1到m++临时区
  3. 1返回m 此时m=1
  4. 此时 m = m(此m是赋值临时区的m)所以 m = 0 m中的1就被覆盖了

标签:01,Scanner,++,控制流,System,println,out,scanner
From: https://www.cnblogs.com/helloA31/p/16656519.html

相关文章

  • Java基础01-注释
    注释:对代码的一种解释1.单行注释//*仅表示//当前行且//后面的内容为注释2.多行注释/*/*换行自动补充,可以注释多行3.文档注释/***///我是单行注释/......
  • vue3项目-小兔鲜儿笔记-商品详情页01
    1.基础布局完成商品详情基础布局,路由配置,搭好页面架子  2.渲染面包屑编写一个钩子函数useGoods.js,将面包屑获取数据的逻辑抽取出来。//拿到商品信息import{......
  • 2022-2023-1 20201324《信息安全系统设计与实现(上)》第2章
    第2章编程背景目录第2章编程背景1Linux中的文本编辑器vim①简介②操作过程2程序开发(1)程序开发步骤(2)静态与动态链接静态链接动态链接(3)可执行文件(4)程序执行过程3链接库......
  • 20201330马榕辰第一,二章学习笔记
    第一章: 一.知识点归纳:第一章前半部分重在介绍课程和书本的基本情况,包括Unix / Linux的历史,其各种发行版,我了解到了一些基本情况。后半部分主要是 Linux的使用,Lin......
  • 20201306吴龙灿学习笔记
    一、知识点归纳:第一章:引言主要内容:第一章是本书的引子,因为本书意在让我们学会Unix以及Linux相关只是,在高级语言的基础上进一步学习创造编程平台的基本语言,让我们学会硬......
  • 20201329魏赫学习笔记一
    20201329信息安全系统设计与实现学习笔记①作业信息作业要求https://www.mosoteach.cn/web/index.php?c=interaction_homework&m=s_write&clazz_course_id=7C854F......
  • 20201322陈俊池 学习笔记1
    一、知识点归纳第一章:引言1.3本书目标(1)强化学生的编程背景知识(2)动态数据结构的作用(3)进程概念和进程管理(4)并发编程(5)定时器和定时功能(6)信号、信号处理和进程间通信(7......
  • D - path || 2019CCPC网络赛 || 贪心,优先队列,vector
    题意:求无起止点的k短路多组数据,效率约为nlogn解法:由于无起止点,就可以用类似kruskal的贪心思路,优先考虑最短的道路并计数。每使用一个当前最短道路,就入队一个次短道路......
  • 20201305学习笔记1
    第一章引言总述:在第一章刚开始这本书引入了Linux系统,告诉了我们Linux系统的发展历程和它的一些运行模式,他的版本,其中最主要讲的就是unbuntuLinux版本,讲了他的一些常用......
  • SQL server 2012 安装教程
    server2012安装教程链接:https://pan.baidu.com/s/1TgS0FHB_Rc9mvpO89QiUtQ?pwd=gyiq提取码:gyiq--来自百度网盘超级会员V3的分享点击“setup.exe”点击左侧"安装",......