nextInt()接收整数后再用nextLine()接收字符串,导致nextLine()方法无效

简介: nextInt()接收整数后再用nextLine()接收字符串,导致nextLine()方法无效

问题描述:

先用nextInt()接收整数,再用nextLine()接收字符串,导致nextLine()方法无效。

//测试代码
import java.util.Scanner;
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num = sc.nextInt();
        System.out.println("请输入一个字符串");
        String line = sc.nextLine();
        System.out.println("输出结果为");
        System.out.println(num);
        System.out.println(line);
    }
}

产生原因:

1.nextInt()和nextLine()方法的结束标记都是 回车换行符(\r\n)

2.nextInt()防止只能接受用户录入的整数,不接收 \r\n

3.\r\n遗留下来,被nextLine()方法识别,导致nextLine()方法直接结束。

解决方案:

 方式一:采用next()方法接收字符串 
        格式: String line = sc.next();
        缺点:next()方法的结束标记是空格,空格之后的数据都接收不到。所以如果录入数据中包含空格的请不要选择这种方式
  方式二:先调用nextLine()方法接收\r\n,再调用一次nextLine接收字符串数据;
         格式:String line = sc.nextLine(); //接收/r/n
                     line = sc.nextLine(); //接收字符串数据
          缺点:nextLine()方法会调用两次。
   方式三:创建一个新的Scanner对象。
          格式:Scanner sc2 = new Scanner(System.in);
                       String line = sc2.nextLine();
          缺点:多创建一次对象,占用系统内存。
     方式四:数字和字符串都用nextLine()接收,然后将字符串数字 转换成 int数字。
          格式:String str = sc.nextLine();//接收数字
                         int num = Integer.parseInt(str);//转换成int类型
                         String line = sc.nextLine();//接收字符串
           推荐使用方式四。

目录
相关文章
|
4月前
|
存储 Java 数据处理
|
4月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
51 0
|
7月前
判断字符类型
该内容描述了一个字符判断和转换的逻辑:输入字符,根据条件进行操作。如果字符是大写字母,转为小写;如果是小写字母,转为大写;若是数字,输出其ASCII值;否则输出"错误"。判断条件包括:大写字母ASCII值在'A'和'Z'之间,小写字母在'a'和'z'之间,数字在'0'和'9'之间。转换利用ASCII值差32的特性,通过if-else if语句实现。内容中还包括两幅示例图片,显示了程序执行的结果。
50 1
|
机器学习/深度学习 Cloud Native 安全
1790. 仅执行一次字符串交换能否使两个字符串相等:简单模拟
这是 力扣上的 1790. 仅执行一次字符串交换能否使两个字符串相等 ,难度为 简单。
键盘录入一段字符串 ,然后输出该字符串中字符出现的次数(TreeMap)
键盘录入一段字符串 ,然后输出该字符串中字符出现的次数(TreeMap)
72 0
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
判断一个字符串是否全部相同
判断一个字符串是否全部相同
92 0
判断一个字符串是否全部相同
判断一个字符串是否全部不相同
判断一个字符串是否全部不相同
82 0
判断一个字符串是否全部不相同
NSString字符串相加连接的三种方法、判断是否包含字符串的方法
NSString字符串相加连接的三种方法、判断是否包含字符串的方法
683 0