黑马程序员——Scanner中nextLine获取字符串时的问题与解决方案

来源:互联网 发布:人皮唐卡 知乎 编辑:程序博客网 时间:2024/05/17 01:07

------- android培训、java培训、期待与您交流! ----------

在使用Scanner中的nextLine时遇到如下问题

class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个整数:")int i = sc.nextInt();System.out.println("输入一个字符串:")String line = sc.nextLine();//运行时直接跳过字符串的输入直接执行下一条语句System.out.println("i = " + i + ",line = " + line);}}

原因分析:

当执行sc.nextInt()语句时,键盘输入完毕,结果会在后面加上\r\n.比如键盘录入4时,最后会将4\r\n返回,而sc.nextLine()方法接收字符时便将\r\n给接收过来,此方法以\r\n来判断结束,所以sc.nextLine()接收到字符\r\n时便结束输入。

解决方案:
1.先获取一个数值后,再创建一个新的键盘录入对象获取字符串
class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个整数:")int i = sc.nextInt();sc = new Scanner(System.in);//此方法浪费资源,不推荐使用System.out.println("输入一个字符串:")String line = sc.nextLine();System.out.println("i = " + i + ",line = " + line);}}

2.把所有的数据都先按照字符串获取,然后按需转换类型
class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个整数:")String numstr = sc.nextLine();int i = Integer.parseInt(numstr);//转换成对应的int类型System.out.println("输入一个字符串:")String line = sc.nextLine();System.out.println("i = " + i + ",line = " + line);}}



0 0
原创粉丝点击