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();//输入一个字符串数组长度为n
            String[] 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“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/16473.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

零基础学会 Java,这是你需要按照学习的步骤,加油,新加入的你

学习 Java 需要遵循一定的步骤&#xff0c;首先需要学习计算机基础知识&#xff0c;例如算法、数据结构、计算机组成原理等。如果没有相关背景知识&#xff0c;可以参加计算机相关课程进行学习。其次是学习编程基础知识&#xff0c;例如控制流、变量、函数等&#xff0c;你可以…

@Autowired和@Resource注解之间的关系区别,Bean的作用域和生命周期,Spring的执行流程

目录 一. Autowired 和 Resource 注解 二. Bean的作用域 1. singleton(单例模式) 2. prototype(原型模式)(多例模式) 3. 请求作用域&#xff1a;request 4. 会话作用域&#xff1a;session 三. Spring 的执行流程 四. Bean 的生命周期 1. 实例化 2. 设置属性 3. Bea…

函数的栈帧与销毁(栈帧可不是战争哦)

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C语言》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;将C语言知识一网打尽&#xff0c;希望可…

【算法】最容易懂得的红黑树

红黑树是一个平衡的二叉树&#xff0c;但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束&#xff0c;但是这样在动态插入中保持树的完美平衡代价太高&#xff0c;所以&#xff0c;我们稍微放松逛一下限制&#xff0c;希望找到一个能在对数时间内完…

PS学习笔记(零基础PS学习教程)

很多新手学习PS不知从何下手&#xff0c;做设计的第一阶段肯定是打牢基础&#xff0c;把工具用熟练&#xff1b;本期特别为大家整理了PS入门的学习笔记&#xff0c;把每个工具的用法整理了下来&#xff0c;在使用过程中有哪里不清楚的可以翻看来看看~ 一、ps的工作界面的介绍 …

Python程序员想要转行,可以从这几个方面着手

最近有很多朋友问我一个问题&#xff0c;不论是我们做程序员还是做产品经理或者其他行业&#xff0c;到了30岁或35岁之后&#xff0c;都会面临各种各样的问题&#xff0c;比如达到职业天花板。有没有一种方法能够解决这种问题呢&#xff1f;我想分享一下我的观点和身边的案例。…

网络攻击与防御

1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证&#xff0c;确保网上传递信息的安全性、完整性。 使用了数字证书&#xff0c;即使您发送的…

ChatGPT是什么?ChatGPT里的G、P、T分别指什么

文章目录 ChatGPT是什么GTP中的 生成式 是什么意思GTP中的 预训练 是什么意思GTP中的 变换模型 是什么意思 什么是Transformer什么是注意力机制 监督学Xi、无监督学Xi、强化学Xi ChatGPT是什么 GPT: Generative Pre-trained Transformer 生成式预训练变换模型 ChatGPT是由Ope…

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号&#xff0c;现在就给大家分享一下&#xff0c;问一下关于.NET的问题&#xff0c;看看ChatGPT的AI功能具体如何&#xff1f; 一、C#跟其它语言比较的优势 回答&#xff1a; C#是一门编程语言&#xff0c;它是为 Microsoft 的 …

第十三章 移动和旋转(上)

移动和旋转是游戏对象最频繁地操作。我们上个章节简单介绍了Cube的移动和旋转。移动是修改transform的position属性&#xff0c;旋转是修改transform的eulerAngles&#xff08;欧拉角&#xff09;属性&#xff0c;两者属性值均可以使用Vector3向量来实现。需要大家注意的是&…

B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能

B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能 文章目录 B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能每博一文案1. Cookie 的概述2. session 与 Cookie 之间的联系&#xff1a;3. Cookie 的作用&#xff…

盈泰德带你了解产品表面缺陷检测系统

与前几年相比&#xff0c;机器视觉行业在表面检测方面有了很大的突破。检测产品表面的划痕、污渍不再困难&#xff0c;广泛应用于金属、玻璃、手机屏幕、液晶面板等行业的表面检测。 机器视觉检测有以下四种常用的检查和照明方法&#xff1a; 同轴照明、低角度照明、背光照明…

Python一行命令搭建HTTP服务器并外网访问 - 内网穿透

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章&#xff1a;【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…

Java 基础进阶篇(五)—— 抽象类与模板方法设计模式

文章目录 一、抽象类、抽象方法概述二、抽象类的特征三、模板方法设计模式3.1使用场景3.2 实现步骤3.3 写作文案例 补充&#xff1a;final 和 abstract 是什么关系? 一、抽象类、抽象方法概述 在 Java 中 abstract 是抽象的意思&#xff0c;可以修饰类、成员方法。 abstract …

win10远程桌面控制Ubuntu服务器 - 内网穿透实现公网远程

文章目录 前言视频教程1. ubuntu安装XRDP2.局域网测试连接3. Ubuntu安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 转载自远程穿透文章&#xff1a;Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具&#xff0c;它允许用户通过Windows…

机械硬盘(HDD)与固态硬盘(SSD)

目录 机械硬盘&#xff08;HDD&#xff09; 最小组成单元是扇区 硬盘结构 硬盘工作原理 硬盘上的数据组织 硬盘指标 影响性能的因素 固态硬盘&#xff08;SSD&#xff09; 最小存储单元是Cell SSD的特点 SSD架构 NAND Flash 闪存介质 地址映射管理 FTL闪存转换层 机械硬盘&…

JAVA IO 模型详解

什么是IO I/O&#xff08;Input/Outpu&#xff09; 即输入&#xff0f;输出 。 从计算机结构的视角来看的话&#xff0c; I/O 描述了计算机系统与外部设备之间通信的过程。 从应用程序的视角来看的话&#xff0c;我们的应用程序对操作系统的内核发起 IO 调用&#xff08;系统调…

微信小程序定义模板

微信小程序提供模板&#xff08;template&#xff09;功能&#xff0c;把一些可以共用的&#xff0c;复用的代码在模板中定义为代码片段&#xff0c;然后在不同的地方调用&#xff0c;可以实现一次编写&#xff0c;多次引用的效果。 首先我们看一下官网是如何操作的 一般的情…

JavaWeb学习--RequestResponse

目录 JavaWeb学习--Request&Response 1&#xff0c;Request和Response的概述 request:获取请求数据 response:设置响应数据 **小结** 2&#xff0c;Request对象 **小结** 2.2 Request获取请求数据 **小结** 2.4 请求参数中文乱码问题 URL编码 2.5 Request请求转…

【前端技术】Vue3 01:初识 Vue.js

Vue 可以说是非常流行了&#xff0c;至少在国内是这样&#xff0c;他是个轻量级的 JavaScript 框架&#xff0c;非常适合构建大型和中小型的 Web 应用程序&#xff0c;如果想和前端打交道&#xff0c;应该绕不过这个框架吧。 目录 1 Vue.js 介绍 2 IDE 选择 2.1 vscode 2.…