当前位置: 首页 > news >正文

Java使用 Scanner连续输入int, String 异常错误输出原因分析

目录

一、Scanner常用语法

1、sc.nextInt()介绍

2、sc.next()介绍

3、sc.nextLine()介绍

4、sc.hasNext()介绍

二、报错案例

1、使用next()来接收带有空格的字符串会输出异常

2、先输入数字再输入字符串的输出异常


一、Scanner常用语法

Scanner sc =new Scanner(System.in);//从键盘输入
int m = sc.nextInt();//接收输入的int类型
String s1= sc.next();//接收输入的字符串类型,遇到空格会停止接收
String s2=sc.nextLine();//接收输入的字符串类型,会把输入的这一行字符全部接收,包括空格和其他符号

1、sc.nextInt()介绍

  •  nextInt()方法只能接受整型数据,如果输入非整型,就会有异常
  • nextInt()方法本质是调用了next()方法,将next()方法返回的字符串再解析成int型数字返回
  • 遇到空格或者回车键会自动停止输入
  • 注意点:nextInt()处理完输入的数字后,会留下一个“enter” ,光标还停留在本行

2、sc.next()介绍

  • next()方法从合法字符开始读取,如果正式字符前有空格,读取的时候会忽略。
  • 读取输入遇到空格或者回车键就停止接收,它不能读两个由空格隔开的单词。
  • 注意点:不能吸收上次输入末尾的回车符(打印时不会显示),所以光标还停留在本行

3、sc.nextLine()介绍

  • nextLine()方法可以完整的读取输入的这一行全部数据,包括空格和其他字符
  • 注意点:可以吸收上次输入末尾的回车符,读取输入后,nextLine()将光标定位在下一行。

4、sc.hasNext()介绍

  • hasNext()方法可以连续从键盘输入数据
  • 使用while语句配合使用:while(sc.hasNext()){输入语句}

二、报错案例

1、使用next()来接收带有空格的字符串会输出异常

import java.util.Scanner;public class Test1 {public static void main(String[] args) {Scanner sc =new Scanner(System.in);//输入字符串"Hello world"String s= sc.next();System.out.println(s);}
}

异常原因:我们输入字符串"Hello world",想要得到"Hello world",当使用next()来接收时,遇到空                   格会停止接收,因此只会输出"Hello"

解决方法:使用nextLine()代替next()来接收输入数据

 

2、先输入数字再输入字符串的输出异常

import java.util.Scanner;public class Test1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();//输入一个字符串数组长度为nString[] str = new String[n];for (int i = 0; i < n; i++) {//字符串数组接收键盘输入字符串元素str[i] = sc.nextLine();}for (String s1 : str) {System.out.println(s1);}}}     
}

异常原因:nextInt()接收输入的数字后,按下回车键开始输入第一个字符串元素时,由于nextInt()  只处理数字,不会处理回车键“enter”。

                这个“enter”于是被后面的nextLine()接收了当成第一个字符串元素,导致最后字符串数组占用了一个位置,最终结果就是最后一个字符串元素没有输入成功

解决方法:在nextInt()后面在跟着一个nextLine()吸收掉”enter“

http://www.lryc.cn/news/63831.html

相关文章:

  • pt13网络编程
  • 华为云 绑定/更换证书
  • 重大问题,Windows11出现重大BUG
  • 傅里叶变换解析
  • 你的登录接口真的安全吗?
  • ChatGPT情商很高,但并不适合当搜索引擎
  • Mac 地址与 IP 地址有什么区别?
  • bootloaders
  • PC或服务器装双系统
  • 嵌入式代码查看分析利器---Understand
  • 人群计数经典方法Density Map Estimation,密度图估计
  • 【华为】Smart-Link基础知识
  • 分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握
  • NIO基础 - 网络编程
  • 06.toRef 和 toRefs
  • RabbitMq、Kafka、RocketMq整理
  • Python多元线性回归预测模型实验完整版
  • C#基础 变量在内存中的存储空间
  • 你最关心的4个零代码问题,ChatGPT 帮你解答了!
  • linux的环境变量
  • openQA----基于openSUSE部署openQA
  • 正则表达式基础一
  • Java中的内存泄露、内存溢出与栈溢出
  • 时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)
  • Java+springboot开发的医院HIS信息管理系统实现,系统部署于云端,支持多租户SaaS模式
  • 【前端面经】Vue-Vue中的 $nextTick 有什么作用?
  • 基于STATCOM的风力发电机稳定性问题仿真分析(Simulink)
  • 如何写出高质量的代码
  • 15.基于主从博弈的智能小区代理商定价策略及电动汽车充电管理
  • ChatGPT实现多语种翻译