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类库的一个基础类,一个可以使用正则表达式来解析基本类型 ...
随机推荐
- 2 算法查找&排序问题
一.查找 1.查找的概念: 2 顺序查找(linear search) 从头找到尾 def linear_search(li,val): for ind ,v in enumerate(li): if ...
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- etcd集群故障处理(转)
1. etcd安装 rpm -ivh etcd-3.2.15-1.el7.x86_64.rpm systemctl daemon-reload systemctl enable etcd system ...
- Python中os模块使用方法
os模块提供了对系统环境.文件.目录等操作系统级的接口函数.本文主要描述os模块和os.path模块常用函数以及常用实例. os模块函数 os.getcwd() 获取当前工作的目录. os.listd ...
- VBS处理AD帐号密码到期提醒的脚本[zt]
原文:https://gallery.technet.microsoft.com/scriptcenter/f7f5f7ed-14ee-4d0e-81c2-7d95ce7e08f5 '======== ...
- easyui中的几个问题
easyui中的tree,采用url参数读取json,无法显示.有可能是vs的IIS不支持,$.ajax 原因待测试,有知道的朋友也可以贴代码,我解决的一个办法是 $(function () { $. ...
- 学习JS的心路历程-函式(一)
前几天有间单提到该如何声明函式及在Hositing中会发生什么事,但是函式的奥妙不仅于此. 身为一个使用JS的工程师,我们一定要熟悉函式到比恋人还熟! 这几天将会把函式逐一扒开跟各位一起探讨其中的奥妙 ...
- vue --轮播图
轮播图,可以使用mint-ui中的swipe HTML: <Swipe :auto="4000"> <SwipeItem v-for="item in ...
- HTTP是用来做什么的
(一)HTTP协议介绍 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目 ...
- Mat取行或列
Mat dst; dst = FeatureValue.colRange(j,j+).clone(); 直接使用Mat类中成员函数,方法,colRange对应的是列,rowRange对应的是行,从第j ...