sc.next在java什么意思_sc.next() 和 nextLine 的原理

对java的Scanner类的next开头的相关类有点纠结,看了一些博客大致懂了,整理下

代码事例直接参考了这位大佬的

https://blog.csdn.net/long71751380/article/details/9400835

1. 总的原理

以一段代码为例,scanner类

import java.util.Scanner;

public class Next {

public static void main(String[] args) {

String s1, s2;

Scanner sc = new Scanner(System.in);

System.out.println("请输入第一个字符串:");

s1 = sc.nextLine();

System.out.println("请输入第二个字符串:");

s2 = sc.next();

System.out.println("输入的字符串是:" + s1 + " " + s2);

}

}

1.1 new Scanner(System.in)

以控制台为例,此时会提供控制台输入,输入的字符会到某缓存通道中A(也不知道专业名词叫什么)

继续执行后面的代码

1.2 sc.nextLine()

此时会从缓存通道A中开始读取数据,通道A中的游标(也不知道专业名词叫什么)初始位置为缓存通道A最前面,此时程序运行到nextLine(),该方法会做两件事情。

一是读取起始符到结束符中的数据,二是游标移动到结束符后(相当于把这段数据清空)

c85c32337cd8

image.png

运行结果

(该部分引用那个博主例子start)

请输入第一个字符串:

ss

请输入第二个字符串:

dd

输入的字符串是:ss dd

但如果把程序改一下, s1=sc.next(); s2=sc.nextLine();

import java.util.Scanner;

public class Next {

public static void main(String[] args) {

String s1, s2;

Scanner sc = new Scanner(System.in);

System.out.println("请输入第一个字符串:");

s1 = sc.next();

System.out.println("请输入第二个字符串:");

s2 = sc.nextLine();

System.out.println("输入的字符串是:" + s1 + " " + s2);

}

}

运行结果

请输入第一个字符串:

ss

请输入第二个字符串:

输入的字符串是:ss

可以看到,nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。例如上面的程序改写为:

import java.util.*;

public class Next {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("请输入第一个字符串");

String s1=sc.next();

sc.nextLine();

System.out.println("请输入第二个字符串");

String s2=sc.nextLine();

System.out.println("输入的字符串是"+s1+" "+s2);

}

}

(该部分引用那个博主例子end)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF RichTextBox相关总结

由于公司涉及到聊天对话框的功能,就想到了RichTextBox,查阅相关资料,总结下: 一、RichTextBox的内容相关的类 1.1RichTextBox的内容结构 RichTexBox是个可编辑控件,可编辑我们很容易想到word的可编辑,在wor…

【Construct Binary Tree from Inorder and Postorder Traversal】cpp

题目: Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that duplicates do not exist in the tree. 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNo…

Remove Duplicates from Sorted Array II leetcode java

题目:Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A [1,1,1,2,2,3], Your function should return length 5, and A is now [1,1,2,2,3]. 题解:之前是不允许有重…

java中非法运算符_Java 中的运算符和流程控制相关内容的理解

//三元表达式的嵌套int max i > j ? (i > k ? i : k) : (j > k ? j : k);//练习&#xff1a;输出分数所对应的等级 >90 -A >80 -B >70 -C >60 -D <60 -Echar level score > 90 ? A:(score > 80 ? B : (score > 70 ? C : (score >6…

BufferedWriterTest

public class BufferedWriterTest { public static void main(String[] args) { try { //创建一个FileWriter 对象 FileWriter fwnew FileWriter("c:\\myDoc\\hello.txt"); //创建一个BufferedWriter 对象 BufferedWriter bwnew BufferedWriter(fw); bw.write(&quo…

python 内置方法赋值_Python内置数据结构之字符串str

1. 数据结构回顾所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串&#xff0c;但是字符串是不可变序列&#xff0c;因此所有的元素赋值和切片赋值都是非法的。>>> website http://www.python.org>>> website[-3:] c…

以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...

在ASP.NET中&#xff0c;有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么? 为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示: 方法信息量大小保存时间应用范围保存位置App…

php中在网页中显示图片代码,用PHP将网页上的Canvas图像保存到服务器上的方法

在几年前HTML5还没有流行的时候&#xff0c;我们的项目经理曾经向我提出这样一个需求&#xff1a;让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名。这需要我们评审软件里提供这样一个功能&#xff1a;打开浏览器&#xff0c;登录&#xff0c;进入评审意见页&#x…

xcode 小插件

1.XCode颜色显示插件ColorSense项目地址&#xff1a; https://github.com/omz/ColorSense-for-Xcode2.规范注释生成器VVDocumenter项目地址&#xff1a;https://github.com/onevcat/VVDocumenter-Xcode3.图片名称自动补全 KSImageNamed-Xcode为项目中使用的UIImage的imageNamed…

实现每个点赞用户点击的带属性的字符串

2019独角兽企业重金招聘Python工程师标准>>> #pragma mark - 点击各个点赞用户-(void)setClicked:(TweetCell *)cell andOSCTweet:(OSCTweet *)tweet {NSMutableAttributedString *attributedString [[NSMutableAttributedString alloc] initWithString:tweet.like…

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式&#xff0c;它把空值叫做NULL。 Null在数据库中表示 不知道的数据&#xff0c;主要有3种意思&#xff1a;1&#xff09;知道数据存在&#xff0c;但不知道具体值.2&#xff09;不知道数据是否存在.3&#xff09;数据不存在.在SQL中&#xff0c; NULL的…

php年月转换为年月日,php 将秒数转换为年、月、日、小时等时间格式

这篇文章主要为大家详细介绍了php 将秒数转换为年、月、日、小时等时间格式&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。这个有用的函数能将秒数表示的事件转换为年、月、日、小时等时间格式&#xff0c;php将秒数转换为时间(年、月、日、小时…)&#xff0c…

在某公司用到一些shell

shell里是不能像其它语言那样&#xff0c;随随便便就可以按个空隔下去的&#xff01; shell的输出 echo chiefcto 函数的声明 function name(){ #打印第一个参数 echo “$1” #打印第二个参数 echo “$2” } 函数是怎么执行的呢&#xff1f; 直接在sh里键入 name 如果需要传参&…

grep/egrep和正则表达式汇总

grep, egrep, fgrep语法格式&#xff1a;grep [option] ... PATTERN FILE--colorauto对目标FILE进行搜索&#xff0c;显示能够匹配的行正则表达式基本正则&#xff1a; grep扩展正则&#xff1a; grep -E 或者 egrepfgrep&#xff1a; fast但是不支持正则表达基本正则表达式的元…

xampp php5.6 7.1共存,New XAMPP with PHP 7.2.8, 7.1.20, 7.0.31 5.6.37

嗨&#xff0c;阿帕奇的朋友们&#xff01;We just released new versions of XAMPP for all platforms with the latest PHP versions: 7.2.8, 7.1.20, 7.0.31 & 5.6.37.您可以下载这些新版本http://www.apachefriends.org/download.html.7.2.8 / 7.1.20 / 7.0.31 / 5.6.3…

基于.net开发chrome核心浏览器【四】

原文:基于.net开发chrome核心浏览器【四】一&#xff1a; 上周去北京出差&#xff0c;给国家电网的项目做架构方案&#xff0c;每天都很晚睡&#xff0c;客户那边的副总也这样拼命工作。 累的不行了&#xff0c;直接导致第四篇文章没有按时发出来。 希望虚心学习1&#xff0c;小…

php5.6 pdo.dll 没有,php5.6没有pdo怎么办

php5.6没有pdo是因为在php5.6中php已经内置了pdo功能&#xff0c;只需要在php.ini文件中将“extensionphp_pdo_firebird.dll”等配置项打开即可。推荐&#xff1a;《PHP视频教程》php5.6中没有php.pdo.dll文件我下载的php 5.6要使用pdo模块&#xff0c;但是通过百度发现发现没有…

javascript获取事件源对象和产生事件的对象

事件源对象是指event对象&#xff0c;其封装了与事件相关的详细信息&#xff0c;比如按键状态。获取事件源对象的方法: 1 <!doctype html>2 <html lang"en"> 3 <head> 4 <title>如何获取事件触发源&#xff08;兼容IE和FireFox&#xff…

git push --no-thin

有时候我们执行 git push 将一个 new branch 推送到远程仓库的时候&#xff0c;会被远程仓库阻止。 可能是我们没有相应的权限吧。然而&#xff0c;我在 git push 的时候加上 --no-thin 参数&#xff0c;就可以将其推送上去了。 $ git push --no-thin origin dev注意&#xff0…

java大小写转置,javascript 字符串 数字反转 字母大小写互换

// 符串abcd123ABCD456 怎么转换为 ABCD321abcd654// 数字要倒序 小写转大写, 大写转小写Array.prototype.reverse function() {var tmp;for (var i 0, j this.length - 1; i < j; i, j--) {tmp this[i];this[i] this[j];this[j] tmp;}return this;};function foo(s) …