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

来源:互联网 发布:鼎捷软件股份有限公司 编辑:程序博客网 时间:2024/06/06 01:20

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

public class demo {public static void main(String[] args) {// TODO Auto-generated method stubSystem.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()方法



0 0
原创粉丝点击