java Scanner类注意事项
1,循环或递归调用获取数字时,不能用hasNextInt()判断是否有输入,不然会陷入死循环,应该用hasNext()。获取也不能用nextInt(),应用next(),否则也会死循环
例如这段代码,用nextInt()就死循环。外面用hasNextInt()判断也死循环
private static int getMethod() throws IOException{
// 判断是否还有输入
try {
if (sc.hasNext()) {
/*String next = sc.next();
System.out.println("ttt:"+next);
if(next.equals("1")||next.equals("2")||next.equals("3")){
return Integer.valueOf(next);
}*/
if(sc.nextInt()==1){
return 1;
}
}
System.out.println("输入有误,只允许输入数字,请重新输入");
return getMethod();
} catch (Exception e) { System.out.println("输入有误,只允许输入数字,请重新输入");
return getMethod();
}
}
2.这个类有时会出现一些bug,即便上正常的代码(注释部分),也会死循环,不过发生几率很小,还有的时候会发生不能输入的情况。我找了好多资料,也没有大佬介绍这一现象,希望有人能找出我的错误告诉我是我错了
3.不知是eclipse还是java的bug,在中文模式下输入(焦点在其他打印日志上),然后切换到正常地方,输入不了,英文可以,如:
第一次,把光标放到绿框中的任意位置,输入英文可以自动在下方显示,程序正常进行
第二次,把光标放到红框中的任意位置,输入中文,则不能继续输入,程序无法正常进行
java Scanner类注意事项的更多相关文章
- Java-Runoob:Java Scanner 类
ylbtech-Java-Runoob:Java Scanner 类 1.返回顶部 1. Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Sc ...
- java Scanner类的使用
参考链接:https://blog.csdn.net/android_depon/article/details/69669160 https://www.cnblogs.com/zhengc ...
- Java - 18 Java Scanner 类
java.util.Scanner是Java5的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner ...
- 12-01 Java Scanner类,Scanner类中的nextLine()产生的换行符问题
分析理解:Scanner sc = new Scanner(System.in); package cn.itcast_01; /* * Scanner:用于接收键盘录入数据. * * 前面的时候: ...
- Java Scanner 类,获取用户输入的值
Scanner 类使用步骤 1.导入java.util.Scanner import java.util.Scanner; 2.创建Scanner对象 Scanner scan = new Scann ...
- java Scanner类与String类
Scanner类的使用: 导入Scanner包,new Scanner对象,记得调用System.in参数,调用对应next方法实现键盘录入. import java.util.Arrays; i ...
- Java Scanner类中next()和nextLine()方法的区别
今天在练习中遇到了调用Scanner类中的nextLine()输入字符串自动跳过的问题,在博客上看了两篇解答,原来是nextLine()误认了前面next()输入时的Enter,但还是想了一会儿才弄清 ...
- Java Scanner类
package io; import java.util.*; public class useScanner { public static void main(String[] args) { S ...
- Java Scanner 类
下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner -是java类库的一个基础类,一个可以使用正则表达式来解析基本类型 ...
随机推荐
- css- 范围选择
1.子元素范围选择 举例 .iconList_wr li:nth-child(n + 1):nth-child(-n + 4) { margin-right: 0.6rem; } .iconList_ ...
- greenlet
在任何时刻,只有一个greenlet在运行,合理安排的串行. http://www.cnblogs.com/xybaby/p/6337944.html
- Dictionary,hashtable, stl:map有什么异同?
相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采用传统的哈希算法:探测散列算法,而字典则采用的是散列拉链算法,效率较高, ...
- Linux下查看与修改mtu值
MTU:通信术语 最大传输单元(Maximum Transmission Unit)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位). 我们在使用互联网时进行的各种网络操作,都是通 ...
- Hive安装与配置--- 基于MySQL元数据
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
- RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系
mysql主从复制中,需要将从库提升为主库,需要取消其从库角色,这可通过执行RESET SLAVE ALL清除从库的同步复制信息.包括连接信息和二进制文件名.位置.从库上执行这个命令后,使用show ...
- html页面跳转
button <button onclick="window.location.href='edit.jsp'">完善个人信息</button> 单击提交表 ...
- mycat 多个逻辑库加读写分离
上3篇笔记主要记录了,读写分离,单库分表,分库分表 这次改动了下,实现了分库分表以及读写分离,基于多个逻辑库,先看配置文件 server.xml <user name="root&qu ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- Linux 多进程实现方法
1.需求 查找192.168.0.*网段中所有未使用过的IP 2.实现 我们知道查找未使用IP的方法可以使用ping命令完成.对于单个IP的判断,使用命令如下 $ 192.168.0.1 PI ...