Scanner之先获取一个数值,再获取一个字符串出错

问题:
利用Scanner从控制台获取多个数据时,第一个为数值,第二个为字符串,从控制台输入第一个数据,回车,还未输入第二个数据就直接停止输入,输出结果只显示数字的问题!
参考代码:

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        String s=sc.nextLine();
        System.out.println("a:"+a+",s:"+s);
    }
}

运行结果:
这里写图片描述
为什么会出现这个问题?
分析:

  1. API中描述Scanner:

    一个简单的文本扫描仪,可以使用正则表达式解析基本类型和字符串。

    注:即当输入12回车则自动识别为int赋值给a,若为string类型则赋值给string类型。

  2. 在输入12回车,则自动识别12赋值给a,而回车则为\n\r,识别为字符串,则自动赋值给s,而回车在控制台上又不显示,那么给我们的感觉则是,只输入了一个就直接停止输入了。

解决方案:

  1. 先获取一个数值后,再创建一个新的键盘录入对象获取字符串。(不推荐
  2. 把所有的数据都先按照字符串获取,然后再使用时需要什么类型就转换成什么类型!(推荐
    如何转换?
    (1). String转Int
    String s1=sc.nextLine();
    int b=Integer.parseInt(s1);
    (2). String转其他
    String s1=sc.nextLine();
    X b=Y.parseX(s1);
    注:其中X为基本类型(double、float、long、byte、boolean),Y为基本类(Double、Float、Long、Byte、Boolean)等;
    (3). String转char
    String s1=sc.nextLine();
    char[] chs=s1.toCharArray();
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值