对Java从控制台读入数据的新发现

1.Scanner类的next()方法不是从控制台读入字符的,它也是读入字符串的。

2.读入字符可以用这样的方法:

Scanner in=new Scanner(System.in);
String a=in.nextLine();
char b=a.charAt(0);

3.next()与nextLine()的区别:next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。意思是next()读入的字符串中没有空格,就算你在控制台输入的是"       abc     def   ",最终它读给变量的是"abc";

nextLine()方法会将打Enter键前所有输入字符读入,包括空格。

4.在next(),nextInt(),nextFloat(),nextDouble()等方法后连用nextLine()方法出现的问题

例如:

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String a=in.next();
        String b=in.nextLine();
        System.out.println("a的结果:"+a);
        System.out.println("b的结果:"+b);
    }
}


运行结果:

1234
a的结果:1234
b的结果:



这里的nextLine()相当于只读取了上一个方法留下enter键,解决方法就是在String a=in.next();String b=in.nextLine();之间再加一个in.nextLine();让它去读取那个enter键,后面的String b=in.nextLine();则可以读取到控制台输入的数据。

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String a=in.next();
        in.nextLine();
        String b=in.nextLine();
        System.out.println("a的结果:"+a);
        System.out.println("b的结果:"+b);
    }
}

运行结果:

1234
5678
a的结果:1234
b的结果:5678

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值