numberformatexception是什么异常 numberformatexception异常解决方法
numberformatexception表示数字格式化异常,需要查看字符串里面夹杂着string或者其他类型,需要注意文本里面的内容必须是数字形式的字符串。
本教程操作环境:windows7系统、Dell G3电脑。
今天出现了个数字转换异常,处理好后稍微总结了几个出现情景。
E/AdroidRutime:致命异常:java.lang.NumberFormatException: Invalid int: "0 "
java.lang.NumberFormatException 数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.
Invalid int: "0 "提示把 "0 " 转换成数字类型时出错了.
具体是哪个类的哪个方法的哪一行的错误了,看下面错误堆栈,at com.example.myclock.TimerView$5.onTextChanged(TimerView.java:95)在com.example.myclock.TimerView类的onTextChanged方法里,imerView.java的第95行出错了
.------原因分析--------------------
"0 "在0后面有空格,在字符串转换成数字时应该去除空格。
------解决方案--------------------
如:intvale=Integer.parseInt(s.toString().trim());//ToString()是转化为字符串的方法 Trim()是去字符串两边空格的方法。
其他抛出NumberFormatException情况:
情况一,超出转换数值类型范围:
用Integer.parseInt()转换字符时抛出NumberFormatException异常,把字符改短一点又没事
String line3[1]= "8613719716 ";
int int1=java.lang.Integer.parseInt(line3[1]);
以上是程序中的一小段,但是在运行的过程中总是抛出异常
Exception in thread "main " java.lang.NumberFormatException: For input string: "8613719716 "
------原因分析--------------------
int类型存储范围是-2,147,483,648 --2,147,483,647。用System.out.println(Integer.MAX_VALUE);输出的是2147483647。而你的 String line3[1]= "8613719716 ";超过了这个最大的值。
------解决方案--------------------
8613719716 根本无法直接使用int表示的,只能用long ,如果更大了就得用到BigInteger 。Long.parseLong(String)。
参考:http://www.myexception.cn/j2se/NumberFormatException.html
情况二,转换值类型没有考虑值为空的状况:
在Android中这个序列是否正确,我打算把得到的edittext中的值转换为整数.
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
logcat 出现了如下错误.05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: unable to parse '' as integer
.------原因分析--------------------
如果textbox startTime_hour_edittext 为空, Integer.parseInt就会试图把 "" 转换成 integer。这就是NumberFormatException出现的原因。所以在转换为int类型前需要判断textbox startTime_hour_edittext中是否为空。
------解决方案--------------------
在使用startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());之前
判断条件:
1 2 3 |
if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) { startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); }
|
情况三,由于进制不同:
题主要做一个进制转换.并且限定范围为 30位的数 (1073741823) 或者(0111111111111111111111111111111). 问题出现在试图转换 111111111111111111111111111111的时候,出现 NumberFormatException.
此代码是检查输入如果是二进制就转换为int型数值
1 2 3 4 5 6 7 8 9 |
if (checkNumber(input)) { try { number = Integer.parseInt(input); } catch (NumberFormatException ex) { log(ex.getMessage()); } } else { toDecimal(); }
|
这是检查 String的布尔返回值方法的代码.
1 2 3 4 5 6 7 8 |
private static boolean checkNumber(String input) { for (char c : input.toCharArray()) { if (!Character.isDigit(c)) { return false; } }
return true;}
|
出现异常:
1 |
java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
|
------原因分析--------------------
因为Integer.parseInt(String)默认是十进制.
所以需要使用Integer.parseInt(String, int)并且指定要转换的n进制的数字的n。比如二进制是2.
------解决方案--------------------
1 |
int value = Integer.parseInt(input, 2);
|
相关推荐:
最新新闻:
- 相机的iso什么意思?旁轴相机和胶片机的区别
- 相机m档是什么档怎么用的?索尼相机连手机app下载
- 电磁阀几位几通的判断方法是什么?发动机电磁阀的作用
- 如何把u盘里的东西拷到手机里?用手机怎么往u盘里下载歌曲?
- Win11屏幕刷新率调整不了怎么解决?windows11兼容性怎么样?
- PPT柱状图如何增加柱子?ppt文本框内部边距怎么设置?
- 每日速递:NSO 会员N64游戏库今日更新 三款游戏入库
- 全球焦点!《卡普空街机合集2》现已发售 收录32款街机游戏名作
- 腾讯出行微信内测打车功能 采用多平台整合的方式
- 微软启动蓝屏提醒 一代经典Windows 8.1被放弃时间确定
- 当前快报:《霍格沃茨的遗产》新演示短片 展示学校北塔区域
- 全球快资讯丨《生化危机8:村庄-黄金版》雇佣兵额外命令预告发布
- 微信安卓8.0.25版发布 更新日志依然是熟悉得不能再熟悉的9个字
- 微信手表版上线:在vivo Watch 2上就能回复消息
- Windows 11声音音质都开始缩水了 Bug不断用户体验不舒爽
- 优酷投屏收费引热议!官方解答:会员权益不包含投屏
- 荣耀MagicBook 14锐龙版图赏 最高搭载AMD锐龙 7 6800H标压处理器
- Intel新旗舰至强W9-3495首曝
- Redmi G 2022游戏本开启预售 搭载新一代NVIDIA Ampere架构
- Intel 13代酷睿i5-13600K架构/频率大升级
- AirPods Pro 2或将抛弃旧款iPhone 仅可以适配iPhone 11或以上机型
- 世界看热讯:电影《奥本海默》预告泄露 明年7月21日上映
- OPPO Watch 3系列配置剧透 将成为骁龙W5首秀舞台
- 荣耀智慧屏X3i发布 采用一体化金属LCD全面屏主打低端千元市场
- 消息称iPhone15全系将采用叹号屏 苹果全面屏手机/平板加速到来
- iQOO 10 Pro根治电量焦虑症 200W超快闪充的实际体验到底有多好?
- 荣耀平板8首发评测 全新升级性能更强大12英寸屏幕+8扬声器
- 荣耀平板8开箱图赏 12英寸护眼大屏拥有2K分辨率
- 荣耀X40i正式发布 引入了全新的钻彩星河设计
- moto razr 2022或推迟发布 主要卖点是三个数字
- 苹果宣布iOS 16新功能上线 想用先交授权费借此来收取不少费用
- 苹果发布iOS/iPadOS 15.6更新 修复诸多Bug
- 小米13曝光首批搭载骁龙8 Gen2机型
- 荣耀平板8预售 三种选择将于7月29日正式发售
- 当前短讯!《上古卷轴ol》官方宣布 游戏玩家突破2100万
- 焦点要闻:《最后的生还者》重制版无障碍选项曝光 沿用二代
- 世界热资讯!育碧正开发多个《刺客信条》游戏 新作极有可能在日本
- 今日热讯:《命运2》将于8月23日举行专场发布会
- 全球视点!性价依旧良心!新款小米Redmi G游戏本6299元首发:2.5K/165Hz大屏
- 精彩看点:《哥谭骑士》蝙蝠女角色预告公开 小丑不会出现
- 全球视点!《时空勇者》评分汇总:一款Switch必玩的RPG游戏
- 动态焦点:暴跌50%!32GB DDR5内存史低价1169元 好价快买
- 【世界报资讯】每日低价硬货:27英寸4K显示器到手999元
- 每日信息:雷蛇发布新款PS5手柄专用快充底座 369元!
- 【环球播资讯】《漫威蜘蛛侠》PC版推荐配置出炉:GTX 1060还能再战十年
- 天天视讯!内存又降价了!32GB DDR4内存秒杀599元
- 全球信息:《糖豆人》再次联动《哥斯拉》追加全新服装
- 当前资讯!3月上映《龙与地下城:盗亦有道》发布正式预告
- 每日精选:《SD高达 激斗同盟》推出试玩版推出 追加剧情确定
- 环球今热点:《鬼灭之刃:火神血风谭》8月更新鬼化祢豆子
- 【当前热闻】Fami通新一周销量榜 《怪物猎人崛起》再次登顶
- 天天视点!剧情驱动RPG《电气马戏团》9月6日发售 登陆全平台
- 焦点讯息:《七龙珠:破界斗士》弗利萨角色预告 10月13日发售
- 全球看点:《忍者神龟合集》宣布8月30日发售 登陆全平台
- 【全球时快讯】《漫威蜘蛛侠:复刻版》国区开启预购 379元
- 今日讯!诺兰新片《奥本海默》首张海报曝光
- 焦点速讯:互联新体验&护眼新标杆 荣耀全场景发布会推出五大新品
- 天天热文:15天免费试骑 折叠山地自行车仅298元
- 世界观速讯丨开启专业创作新时代 洞察用户需求的华硕靠什么成功?
- 当前讯息:星巴克不锈钢马克杯 小米平替仅29元
- 全球快报:华硕ProArt创16 2022重磅首发 独创华硕旋钮设计玩出创作新花样
- 当前聚焦:美剧《哥斯拉大战泰坦》新卡司公布
- 焦点快报!传字节跳动估值跌破3000亿美元 比去年至少下跌25%
- 天天热资讯!【手慢无】小米12S破发 到手仅3799元 还能6期免息
- 全球信息:好莱坞明星最新片酬曝光 阿汤哥破亿居榜首
- 【世界新要闻】旷世G7六期免息啦!这个暑假就要宅在家里打游戏
- 环球精选!机身细节出众 新CODE01高性能轻薄本新图来了
- 世界热头条丨《光明记忆:无限》今日正式登陆主机端 售价78港币
- 世界要闻:NAND供应过剩!SSD价格还要大降价 降幅不小
- 全球讯息:不打价格战 快递报复性涨价 网友吐槽:还是不送上门
- 当前简讯:被评为天猫精灵“超级黑马伙伴” 森歌集成灶究竟有何魔力?
- 全球热门:京东携手TCL发布一价无忧服务标准
- 【世界速看料】三星完成第二代智能SSD研发 功耗降低70% CPU占用降97%
- 天天简讯:沈腾开用小米12S Ultra:本人自拍被夸帅
- 天天热点!百亿补贴再爆惊喜 12代标压+RTX3050++ 120Hz OLED 华硕无畏Pro15 2022仅需6299元