c语言中->next是什么意思,Java中关于nextInt()、next()和nextLine()的理解

先看解释:

nextInt(): it only reads the int value, nextInt() places the cursor in the same line after reading the input.

next(): read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same line after reading the input.

nextLine():  reads input including space between the words (that is, it reads till the end of line \n). Once the input is read, nextLine() positions the cursor in the next line.

看完之后nextInt()、next()和nextLine()的区别已经很清楚了,我觉得最容易出错的就是cursor问题。

看下面代码:

import java.util.Scanner;

public class MaxMap {

public static void main(String[] args){

Scanner cin = new Scanner(System.in);

int n = cin.nextInt();

String str = cin.nextLine();

System.out.println("END");

}

}

执行后结果:

0a16cbf8ca37da2c1251cf5d2326f19d.png

从执行结果上看,貌似直接跳过了String str = cin.nextLine();这行代码。

其实不然,原因是:nextInt()只读取数值,剩下"\n"还没有读取,并将cursor放在本行中。nextLine()会读取"\n",并结束(nextLine() reads till the end of line \n)。

如果想要在nextInt()后读取一行,就得在nextInt()之后额外加上cin.nextLine(),代码如下

import java.util.Scanner;

public class MaxMap {

public static void main(String[] args){

Scanner cin = new Scanner(System.in);

int n = cin.nextInt();

cin.nextLine();

String str = cin.nextLine();

System.out.println("END");

}

}

在看下面代码:

import java.util.Scanner;

public class MaxMap {

public static void main(String[] args){

Scanner cin = new Scanner(System.in);

String n = cin.next();

//cin.nextLine();

String str = cin.nextLine();

System.out.println("END");

System.out.println("next()read:"+n);

System.out.println("nextLine()read:"+str);

}

}

执行结果:

c195b96747bb0dd586c595b820eed659.png

834eebc4cc895f864a81a8fa01904049.png

原因:next()只读空格之前的数据,并且cursor指向本行,后面的nextLine()会继续读取前面留下的数据。

想要读取整行,就是用nextLine()。

读取数字也可以使用nextLine(),不过需要转换:Integer.parseInt(cin.nextLine())。

注意在next()、nextInt()与nextLine()一起使用时,next()、nextInt()往往会读取部分数据(会留下"\n"或者空格之后的数据)。

Java的in.nextInt()和in.nextLine()方法的具体内涵

本人也是刚开始学习java语言,在学习的过程中,老师让我们做一个模拟学生学籍管理系统的小程序.因为刚开始,做的是比较简单的,用switch语句做界面,然后配合Scanner 接收输入的数字进行跳转,完 ...

一些简单的例子让你在Java中能更好的学习并理解循环结构(1)!

一.java中流程控制方式采用三种基本流程结构:顺序结构,选择(分支)结构,循环结构. 1.[if-else 结构] if(1>2){ system.out.println("if条件 ...

转载:JAVA中关于set()和get()方法的理解及使用

对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者 ...

JAVA中关于set()和get()方法的理解及使用

对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者 ...

Java中<? extends T>和<? super T>的理解

? 通配符类型 - extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类; super T> 表示类型下界(Java Core中叫超类型限 ...

JAVA中关于set()和get()方法的理解以及使用

set()和get()方法的理解 set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的. 而且,在类中使用set和get方法时,都 ...

Java中next()和nextLine()的区别

首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后 ...

Java中HashMap和TreeMap的区别深入理解

首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. Has ...

java中 引用传递、值传递的理解(数组,自定义类,基本数据类型,String类)

代码部分: public static void main(String[] args) { testInt(); testString(); testArray(); testX(); } publ ...

随机推荐

SQLServer------Join的使用方法

参考菜鸟教程网: http://www.runoob.com/sql/sql-join.html select a.Canteen,b.OrderNum,b.CreateTime,c.Name fro ...

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法,先分组,然后在组内排名,分组计算,主表与附表一对多取唯一等

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法 今天在使用多字段去重时,由于某些字段有多种可能性,只需根据部分字段进行去重,在网上看到了row ...

KMP--路过

HDU 1358:弄清楚了NEXT,就好解决,还有不要再循环中用strlen;会超 ----------------------我是凑字数的------------------还是不会KMP----- ...

Cloudera Development Kit(CDK) 简介

Cloudera Development Kit(CDK) 简介 guibin.beijing@gmail.com 2013.07.02 CDK简介 CDK(Cloudera Development ...

JAVA的抽象类和接口

抽象类 在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对 ...

springboot自定义http反馈状态码

最近在开发一些http server类型程序,通过spring boot构建一些web程序,这些web程序之间通过http进行数据访问.共享,如下图: 假设现在client发起一次保存数据的请求到se ...

python包管理工具pip

你可以使用一个名为 pip 的程序来安装.升级和移除软件包.默认情况下 pip 将从 Python Package Index 安装软件包.你可以在浏 ...

C# 通过反射获取方法/类上的自定义特性

1.所有自定义属性都必须继承System.Attribute 2.自定义属性的类名称必须为 XXXXAttribute 即是已Attribute结尾 自定义属性QuickWebApi [Attribu ...

【BZOJ4231】回忆树 离线+fail树+KMP

[BZOJ4231]回忆树 Description 回忆树是树. 具体来说,是n个点n-1条边的无向连通图,点标号为1~n,每条边上有一个字符(出于简化目的,我们认为只有小写字母). 对一棵回忆树来说 ...

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值