参考http://stackoverflow.com/questions/19331426/for-loop-does-not-iterate-the-way-i-want

见以下代码:

package com.ljh.corejava;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class NextIntTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);List<Student> students = new ArrayList<Student>() ;for(int i = 0 ; i < 3; i++){Student s = new Student();System.out.print("Enter name:");s.name = sc.nextLine();System.out.print("Enter number:");s.number = sc.nextInt();students.add(s);            }for(Student s : students){System.out.println(s.name+" : " + s.number);}}
}class Student{//学生名字String name;//学号int number;
}

1、输入如下:

Enter name:ll
Enter number:1
Enter name:Enter number:kk
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at com.ljh.corejava.NextIntTest.main(NextIntTest.java:23)

在nextLine()中读取了第一行ll,但nextInt()只读取了数字1却没有读取换行符,下一个nextLine()会读取换行符,再下一个nextInt()会读取k,因此出现了错误,类型不匹配。

解决方法一:

加一个nextLine()读取换行符,并不做处理。

         Student s = new Student();System.out.print("Enter name:");s.name = sc.nextLine();System.out.print("Enter number:");s.number = sc.nextInt();sc.nextLine();students.add(s);    

输出结果:

Enter name:ll
Enter number:1
Enter name:ll
Enter number:1
Enter name:kk
Enter number:2
ll : 1
ll : 1
kk : 2

处理方法二:

使用nextLine()读取int类型后,再用Integer.parseInt()产生数字。

         System.out.print("Enter name:");s.name = sc.nextLine();System.out.print("Enter number:");//解决方法二:s.number = Integer.parseInt(sc.nextLine());

使用nextInt()等接受输入时必须注意换行符的输入相关推荐

  1. C++中输入一组数字 以换行符结束输入

    一:引言 这个直接上码拿去直接用 二:上码 这个输入是 未知 输入 数字的个数 所以用了 while (1)死循环 然后结束 循环的条件是 输入的为换行符则输入结束 #include<bits/ ...

  2. idea CRLF LF 编码问题,解决保存时自动更改换行符

    idea CRLF LF 编码问题,解决保存时自动更改换行符 参考文章: (1)idea CRLF LF 编码问题,解决保存时自动更改换行符 (2)https://www.cnblogs.com/wu ...

  3. Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换

    Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换 一.各操作系统下文件换行符 二.TortoiseGit下载Github代码关闭文件换行符 三.示例说明 1.开启换行符自动 ...

  4. java输出到txt 换行_Java输出到txt文件时如何加换行符

    Java输出到txt文件时如何加换行符 时间:2017-09-18     来源:华清远见JAVA学院 知道Java输出到txt文件时如何加换行符吗?今天华清Java学院小编就和大家分享三种Java输 ...

  5. java换行符(java换行符怎么输入)

    java怎么换行 第一种:使用system.out.println()//这是换一行. 第二种:使用system.out.print("\n");//这也是换一行. 第一种和第二种 ...

  6. JSON.parse 解析json字符串时,遇换行符报错

    Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...

  7. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别

    [时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...

  8. PC版微信如何输入换行符

    问题: 微信PC版缺省输入Enter键是发送消息,但有时候想输入换行符就输入不了了,因为敲回车键消息就发出去了.怎么在消息中输入回车符呢? 解决: 1.在微信设置->快捷按键里修改发送消息的快捷 ...

  9. c++string 输入换行符

    string 一次只能输入一行,不含换行符.可以自己添加换行符 和输入行数.例如:#include <iostream>#include <string>using names ...

最新文章

  1. uber_这就是我本可以免费骑Uber的方式
  2. 4节点近160万IOPS:SDS/超融合测试不能只看数字
  3. 本地连接不见了怎么办?
  4. 透彻理解块级元素的宽度
  5. 我为NET狂-----大前端专帖
  6. 动态规划之正则表达式匹配字符串
  7. 漫步数理统计四——概率集合函数(下)
  8. ubuntu安装composer
  9. Java httpClient 发送http请求
  10. 汽车系统英文缩写大全,值得收藏
  11. 《软件工程》第6章体系结构设计
  12. 数据结构与算法——线性表的链式储存结构
  13. MFS分布式文件系统
  14. 华硕固件无线打印机服务器设置,华硕路由器远程打印机LPD设置-Windows.pdf
  15. 权值衰减和L2正则化傻傻分不清楚?
  16. html5研究背景及意义,基于HTML5的统计图表系统的研究与设计
  17. 来了!CDEC2022全国六城首站——深圳!
  18. 电脑系统怎么重装?保姆级Windows 8系统安装教程
  19. 105. 填充书架-M
  20. Java中的 分号 ;

热门文章

  1. 最全的时间类解析。 SimpleDateFormat + Date() 和 DateTimeFormatter + LocalDate()的区别与使用场景
  2. 通俗易懂!navicate如何导入MySQL数据库的.sql文件?
  3. 1039 Course List for Student (25 分)_33行代码AC
  4. 【思维】最大降雨量(解题报告)
  5. 【一步到胃解决】Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost are already
  6. 计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
  7. word2026第十套计算机二级,计算机二级第十套练习真题
  8. OpenStack(二)——Keystone组件
  9. NRF24L01跳频抗信道干扰功能探讨
  10. 解读STM32标准库的程序架构 - 以GPIO操作为例