java中scanner不输入就跳过_scanner类中函数nextline()没有输入自动跳过的问题

import java.util.Scanner;

public class InputTest04 {

public static void main(String[] args) {

// 接收多种类型的输入数据

Scanner sco = new Scanner(System.in);

System.out.println("your name");

String name = sco.nextLine();// 接收一行字符串

System.out.println("your age");

int age = sco.nextInt();// 接收一行数字

System.out.println("your salary");

float sal = sco.nextFloat();// 接收一行数字

System.out.println("your gender");

String gender = sco.nextLine();// 接收一行字符串,注意和nextLine的区别是从第一个非特殊字符

System.out.println(

"name is " + name + ";\tage is " + age + ";\tsalary is " + sal + ";\tgender is " + gender + ";");

// 关闭流

sco.close();

}

}

问题:在第四个变量gender性别的位置,没有输入值就自动跳过了?

解决思路:

1、检查代码正确性;确认没错误;

2、怀疑位置放置不合适;尝试放在第三个变量salary前面,依然跳过;放在第二个age前面,不会出错;

3、怀疑是接收的数据类型由字符串到数值再到字符串导致跳过;

4、查阅资料;

原因:

in.nextLine();不能放在in.nextInt()代码段后面;因为in.nextLine()会读入"\n"字符,但"\n"并不会成为返回的字符,而nextInt()是不会读入“\n”的;

什么是“\n”,特殊字符-转行

因为nextInt()接收一个整型字符,不会读取\n;而nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符

解决:把代码中的nextLine();换成next();便可以解决“跳过”问题。

next();这个函数会扫描从有效字符起到空格,Tab,回车等结束字符之间的内容并作为String返回。

nextLine();这个函数在你输入完一些东西之后按下回车则视为输入结束,输入的内容将被作为String返回。

next();这个函数与之不同在于next();什么都不输入直接敲回车不会返回,而nextLine()即使不输入东西直接敲回车也会返回。

举个例子,输入" abc def gh\n",next();会返回abc,而nextLine();会返回 abc def gh\n,我们看到的是 abc def gh

代码:

System.out.println("your gender");

String gender = sco.nextLine();// 接收一行字符串,注意和nextLine的区别是从第一个非特殊字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值