千家信息网

numberformatexception指的是什么异常

发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,这篇文章将为大家详细讲解有关numberformatexception指的是什么异常,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。numberformatexcep
千家信息网最后更新 2025年01月29日numberformatexception指的是什么异常

这篇文章将为大家详细讲解有关numberformatexception指的是什么异常,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

numberformatexception表示数字格式化异常,需要查看字符串里面夹杂着string或者其他类型,需要注意文本里面的内容必须是数字形式的字符串。

今天出现了个数字转换异常,处理好后稍微总结了几个出现情景。




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后面有空格,在字符串转换成数字时应该去除空格。

------解决方案--------------------

如: int vale=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());之前

判断条件:

if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) {startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());}

情况三,由于进制不同:

题主要做一个进制转换.并且限定范围为 30位的数 (1073741823) 或者(0111111111111111111111111111111). 问题出现在试图转换 111111111111111111111111111111的时候,出现 NumberFormatException.

此代码是检查输入如果是二进制就转换为int型数值

if (checkNumber(input)) {        try {        number = Integer.parseInt(input);        } catch (NumberFormatException ex) {            log(ex.getMessage());        }    } else {        toDecimal();    }

这是检查 String的布尔返回值方法的代码.

private static boolean checkNumber(String input) {    for (char c : input.toCharArray()) {        if (!Character.isDigit(c)) {            return false;        }    }    return true;}

出现异常:

java.lang.NumberFormatException: For input string: "111111111111111111111111111111"

------原因分析--------------------

因为 Integer.parseInt(String) 默认是十进制.

所以需要使用 Integer.parseInt(String, int) 并且指定要转换的n进制的数字的n。比如二进制是2.

------解决方案--------------------

int value = Integer.parseInt(input, 2);

关于"numberformatexception指的是什么异常"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数字 字符 类型 字符串 原因 方法 原因分析 情况 方案 解决方案 分析 格式 篇文章 范围 进制 错误 二进制 代码 内容 数值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联动式网络安全防御特点 七一期间网络安全 教培管理软件开发解决方案 个旧天气预报软件开发 德明数据库 部队需要网络安全人才吗 网络安全问题排查整治 黑魂3pvp服务器 网络安全周开幕式在哪个城市举行 先备案域名还是先安装服务器 保存oracle数据库乱码 河北的软件开发公司 医院楼校园网络安全 天津奥的斯服务器操作云空间 清华同方服务器设置磁盘 校园网物理网络安全 前台和数据库的连接步骤是什么 为什么申请软件开发 哪个公司的服务器安全性 河海大学网络安全应急演练 郑州期货软件开发 信息来自于数据库对不对 临沂市委网信办网络安全 手机读取数据库失败 服务器模拟软件 四川一区如何连接服务器云服务器 新洲区标准网络安全维护介绍 常用生物数据库的思维导图 数据库和售前技术咨询 数据库事物的特征有哪几种
0