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

xiaoxiao2021-02-28  69

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()方法

转载请注明原文地址: https://www.6miu.com/read-40989.html

最新回复(0)