BenChuat 2024-03-12 22:12 采纳率: 73.1%
浏览 5
已结题

java的scanner问题

输入样例:
3
75 3
53 2
59 2
问题:为什么调试看的第一行读取一个整数没问题,然后读取第二第三行,也没问题,就是读取最后一行来到最后一次for里的nextline就有问题了,一直等待用户输入,如果这时候我敲入一个回车就结束了程序,但就不符合我的代码逻辑了呀,为什么最后一行的读取这么奇怪呢

img

img

img

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-03-14 03:18
    关注

    【相关推荐】



    • 这篇博客: 算法4-中兴捧月杯热身赛1素数判断-热身赛2亲和串-热身赛3旅游路线-中的 Scanner 类的next和nextLine方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      Scanner类的方法

      方法名说明
      String next()查找并返回此扫描仪的下一个完整令牌
      不接收空格,在接收有效数据之前,所有的空格或tab键投被忽略,若有有效数据,则遇到这些键退出
      int nextInt()将输入的下一个标记扫描为int
      String nextLine()将此扫描仪推进到当前行并返回跳过的输入
      可以接收空格或tab键,输入以enter键结束

      代码

      // idea_algorithm 
      package offer2.Test423;
      
      import java.util.Scanner;
      
      public class StringnextLineDemo {
          public static void main(String[] args) {
              method1();
          }
          public static void method(){
              Scanner input = new Scanner(System.in);
              String s1 = input.next();
              String s2 = input.next();
              System.out.println(s1);
              System.out.println(s2);
              System.out.println(s1 + s2);
      
              // 键盘输入ABC(空格)DEF(空格)(空格)
              // 输出结果是:
              // ABC
              // DEF
              // ABCDEF
              // 分析:没有接收空格,要是接收了空格,那么最后的输出应该会有空格,ABC 和 DEF 之间的空格被当做 两个字符串之间的划分,表示输入的是两个字符串
          }
      
          public static void method1(){
              Scanner input = new Scanner(System.in);
              String s1 = input.next();
              String s2 = input.next();
              String s3 = input.nextLine();
      
              System.out.println(s1);
              System.out.println(s2);
              System.out.println(s3);
              System.out.println(s1 + s2);
              System.out.println(s1 + s2 + s3);
      
              // 键盘输入A(空格)B(空格)C(空格)D(空格)
              // 输出结果是:
              //A
              //B
              //(空格)C(空格)D(空格)
              //AB
              //AB(空格)C(空格)D(空格)
              // nextLine()方法可以接收空格或tab键。
          }
      }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译