Scanner不能连续输入的问题;Scanner输入为空;

如图:

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String str=sc.nextLine();

        System.out.println(str);
    }

这里我们想要输入一个整数和一个字符串,但是输入整数后回车,程序直接结束了?!

分析原因: 

输入整数后回车,相对于输入一个整数和'\n'。

nextInt() 读取数字,遇到回车('\n')停止,返回回车之前的字符串。

然后轮到nextLine发挥作用,读取接下来一行的内容:回车('\n')

所以,nextLine得到的结果为空

解决方法:

方法一:两个都变成nextLine,把数字先用字符型接收,再转化为整型

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        String n=sc.nextLine();
        String str=sc.nextLine();
        
        int num= Integer.parseInt(n);

        System.out.println(str);
    }

方法二:nextLine变成next()

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String str=sc.next();

        System.out.println(str);
    }

方法三(不推荐):new一个新的scanner,但是new新对象会占用空间,最好不用

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Scanner in=new Scanner(System.in);
        
        int n=sc.nextInt();
        String str=in.nextLine();

        System.out.println(str);
    }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Java Scanner可以实现连续多次输入。可以使用循环结构,例如while或for循环,来重复读取输入。在每次循环中,使用Scanner的next方法读取输入,并进行相应的处理。可以使用计数器或其他条件来控制循环次数,以达到需要的输入次数。同时,需要注意在读取完最后一个输入后,及时关闭Scanner对象,以释放资源。 ### 回答2: Java ScannerJava 语言提供的一个输入流处理工具,主要用于读取用户从命令行输入的数据或者文件中的数据。当我们需要连续多次输入时,就可以使用 Scanner 来实现用户输入数据的读取。 在使用 Scanner 连续多次输入时,可以通过一个循环不断读取用户输入的数据,直到用户结束输入为止。具体步骤如下: 1. 创建 Scanner 对象。可以通过 System.in 来获取从命令行输入的数据。 ``` Scanner scanner = new Scanner(System.in); ``` 2. 使用循环不断读取用户输入的数据。一般情况下,使用 while 循环或者 do-while 循环均可。 ``` while (scanner.hasNext()) { String input = scanner.nextLine(); // 对输入进行处理 } ``` 或者 ``` do { String input = scanner.nextLine(); // 对输入进行处理 } while (scanner.hasNext()); ``` 3. 在循环中对用户输入的数据进行处理。可以根据具体需求进行相应的处理操作,例如将用户输入的字符串转换为数字、输出用户输入的内容等。 ``` int num = Integer.parseInt(input); System.out.println("您输入的数字是:" + num); ``` 4. 如果用户输入结束,则退出循环。 在使用 Scanner 进行连续多次输入时,还需要注意一些问题: 1. 需要注意输入数据的格式和类型,以免出现数据转换错误等问题。 2. 需要对输入数据进行校验,避免用户输入不正确的数据。 总之,使用 Scanner 进行连续多次输入需要掌握 Scanner 的基本使用方法,同时需要注意处理输入的数据,避免出现错误。 ### 回答3: Java中的Scanner类是一个常用的输入工具。它可以帮助我们从标准输入流(通常是键盘)中读取用户的输入Scanner类的使用非常简单,我们只需要创建Scanner对象并指定要读取的流,然后通过next()方法获取输入的字符串即可。但是,如果我们需要连续多次输入,该如何处理呢? 一种处理多次输入的方式是使用循环结构,比如while循环或for循环。在循环体中,我们可以通过Scanner对象获取输入的字符串,并根据需要进行处理。例如,我们可以使用一个字符串数组用于存储用户输入的字符串,并在循环结束后逐个输出这些字符串。 另一种方式是使用Scanner的nextLine()方法,该方法可以读取一行完整的输入。在多次输入的情况下,我们可以在循环中多次调用该方法,每次输入一行,并进行相应的处理。例如,我们可以使用一个StringBuilder对象用于拼接多行输入的字符串,并在输入结束后输出整个字符串。 需要注意的是,在使用Scanner连续多次输入时,需要在每次输入之间加上一些控制字符(比如空格、分隔符等),否则Scanner可能会无法读取输入。另外,如果用户输入的数据类型与我们需要的数据类型不匹配,还需要进行类型转换。 总之,Scanner类是Java中常用的输入工具,它可以帮助我们获取用户的输入。在多次输入的情况下,我们可以使用循环结构或者nextLine()方法,根据需要进行输入、处理、输出等操作。需要注意输入的格式和数据类型,以确保程序的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值