您的位置:首页 > 其它

Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误

2017-05-05 21:46 549 查看
Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误

public class demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入整数");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("整数" + i);
System.out.println("请输入字符串");
String s = sc.nextLine();
System.out.println("字符串" + s);
换行符‘\n’和回车符‘\r‘
 
java中Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误,
那就是当next()或者nextInt(),nextDouble()  、 nextFloat()用在nextLine的前面时。
nextLine会把前者的结束符“换行符”作为字符串读入,进而不需要从键盘输入字符串nextLine已经转向下一条语句执行,
 
 nextInt(),当我们录入10时
 其实在键盘上录入的是10和\r\n,然后结束
 nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
 
 每次输入都需要给出回车,表示输入结束。
但回车也一个字符串。
先nextInt(),获取一个整数,再nextLine()获取一行字符串。
因为nextInt()时,输入结束时会输入一个回车符,这个回车符会被nextLine()获取,所以会出问题。

解决
1让两个输入使用不同的Scanner对象
2都用nextline()方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐