关于hasNextInt判断后无限循环输出else项的解决办法
话不多说,上来就是干!
import java.util.Scanner;
public class Test_hasNextInt {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in); //关于hasNextInt判断后无限循环输出else项的解决办法
String next;
int i;
while(true) {
// Scanner sc = new Scanner(System.in); //第一种处理方法,把扫描器拿到里面来,每次循环都创建一个新的扫描器.else语句里直接提示输入错误就好了
System.out.println("请输入一个整数");
if (sc.hasNextInt()) { //如果通过使用 nextInt() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 int 值,则返回 true。
i = sc.nextInt(); //如果是输入 22 33 会做两次输出
System.out.println(i);
} else {
// next = sc.next(); //第二种处理方法,把scanner缓存里的非int值接收掉
// System.out.println("您输入的是:" + next + ",请重新输入");
//注意:next() 查找并返回来自此扫描器的下一个完整标记 例如输入: aa bb cc 那么这里会先接收aa ,然后输出aa
//然后再while()循环,遇到if判断缓存里的bb 确定不是整数后继续走else语句输出bb.同理输出完cc才会停止
//如果输入的是 aa 22 cc,那么先走else输出aa, 再判断出是22是整数走if语句,走完再次走cc才能结束
String nextLine = sc.nextLine(); //第三种处理方法,算了 还是接收一行吧!
System.out.println(nextLine); //如果输入 22 aaa 333 ccc 第一次会走if把22接收掉,
//然后遇到aaa后走esls会把后面的整行都接收掉
//当然,正常情况下没有sc.hasNextInt()这一个判断的时候,
//nextLine()会把整行都接收掉,而这里是因为被上面的nextInt()拿走了一个22
//所以还是看需要把.第一种虽然每次输入都会创建一次Scanner对象,但是也算是一种合理的解决办法!
//总结:理解缓存,就会明白了!
}
}
}
}
关于hasNextInt判断后无限循环输出else项的解决办法的更多相关文章
- WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转)
WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转) Windows Communication Foundation (WCF)是Microsoft为构建面向服务的应用提供的分布式通信 ...
- windows7开机后,罗技k380无法自动连接解决办法
问题描述: windows7开机后,罗技k380无法自动连接,必须删除设备后重新发现才能正常连接. 解决办法: 是因为笔记本电脑的蓝牙设置问题.按如下设置即可解决. [Bluetooth设置]-[允许 ...
- redhat图形界面启动后出现桌面但是没有登录界面解决办法
redhat图形界面启动后出现桌面但是没有登录界面解决办法 2014年07月11日 10:50:10 阅读数:7931 redhat Linux一直用着好好地,今天打开只有图像界面背景,没有出现登陆界 ...
- resin后台输出中文乱码的解决办法!
resin后台输出中文乱码的解决办法! 学习了:https://blog.csdn.net/kobeguang/article/details/34116429 编辑conf/resin.con文件: ...
- iOS循环引用常见场景和解决办法
好多场景会导致循环引用,例如使用Block.线程.委托.通知.观察者都可能会导致循环引用. 1.委托 遵守一个规则,委托方持有代理方的强引用,代理方持有委托方的弱引用. 实际场景中,委托方会是一个控制 ...
- Swift - 内存泄露原因(循环强引用)及解决办法
Swift使用自动引用计数(ARC)来管理应用程序的内存使用.在大多是情况下,并不需要考虑内存的管理.当实例不再需要的时候,ARC会自动释放这些实例所使用的内存. 但ARC并不是绝对安全的.下面两种情 ...
- 使用RandomString方法后,结果返回相同的随机数解决办法
所遇问题: 在做超市管理系统的登录项目时,在对“随机数的产生”出现一个问题,在产生多个随机数的时候,出现了产生了多个一样的随机数,具体代码如下: /// <summary> /// 生成随 ...
- 【原】安装Win7和Ubuntu双系统后,Win7耳机无声音的解决办法
最近安装了Ubuntu的桌面版,作成了双系统,可是发现了一个问题:进入Win7后有时插耳机会没有声音,外放有声音.后来更新驱动也没有解决问题,最后在网上查到了解决办法. 产生原因:进入Ubuntu后, ...
- hadoop启动后jps查不到namenode的解决办法
最近由于项目需要开始接触hadoop,在配置伪分布式启动后,jps查询进程发现少了namenode,而DataNode却存在. 下面是我的core-site.xml和hdfs-site.xml配置: ...
随机推荐
- win8 系统安装node环境记录
原先我是用win7环境安装node很方便,到了win8系统突然变了,让我顿时困惑了一段时间,但还是被我找到方式解决了,记录一下解决方案: 首先在网上看了一些资料说win8下安装node环境会出错,但我 ...
- web项目绝对路径与相对路径的问题
1.绝对路径:就是一个文件url的全部或者磁盘完整的物理地址;例如 http://localhost:8080/navigation/a.jsp就是a.jsp的绝对路径,再例如 D:\TC\a.jsp ...
- Python for Infomatics 第12章 网络编程二(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.3 用HTTP协议获取一张 ...
- Leetcode Candy
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- Codeforces Round #254 (Div. 2) A DZY Loves Chessboard
先生成nXm的BW棋盘 BWBWBWBW WBWBWBWB BWBWBWBW WBWBWBWB 类似上面交替变换 然后将输入为’-’的地方替换成‘-’即可 #include <iostream& ...
- java.lang.NoSuchMethodError:
Servlet.service() for servlet [springMVC] in context with path [/mobile] threw exception [Handler pr ...
- JavaBean对象与Map对象互相转化
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...
- CommonJS Promises/A规范
本文来自四火哥的翻译 CommonJS是一组javascript编程规范,而promise是其中之一. 简而言之,promises是一种令代码的异步行为变得更加优雅的软件抽象.在基本的定义中,代码可能 ...
- Flume_使用
案例一: source:hive.log channel: memory sink: logger输出 拷贝一份flume-conf.properties.template改名为hive-mem-l ...
- *HDU1150 二分图
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...