首页 常见问题 numberformatexception是什么异常

numberformatexception是什么异常

Jan 14, 2021 pm 06:25 PM
numberformatexception 异常

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

numberformatexception是什么异常

本教程操作环境: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后面有空格,在字符串转换成数字时应该去除空格。

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

如: 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中是否为空。

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

在使用 <span >startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());</span><span style="font-family:Arial,\Helvetica Neue\, Helvetica,sans-serif; color:#242729">之前</span>

判断条件:

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是什么异常的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1243
24
如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) 如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) Aug 18, 2023 pm 01:57 PM

如何解决Java线程中断超时异常(ThreadInterruptedTimeoutException)在Java多线程编程中,经常会遇到线程执行时间过长的情况。为了避免线程占用过多的系统资源,我们通常会设置一个超时时间,当线程执行时间超过超时时间时,我们希望能够中断线程的执行。Java中提供了线程中断的机制,通过调用线程的interrupt()方法可以向线程

Java中的OutOfMemoryError异常常见原因是什么? Java中的OutOfMemoryError异常常见原因是什么? Jun 25, 2023 pm 08:43 PM

Java是目前使用最广泛的编程语言之一,但在使用Java开发应用程序时,很容易遇到“OutOfMemoryError”异常错误,这种错误经常会给开发者带来一些挑战。究竟什么原因会导致Java中的OutOfMemoryError异常呢?接下来,我们就来详细了解一下。内存泄漏(MemoryLeak)内存泄漏是指当一个对象不能被垃圾回收器回收时,就会导致内存泄漏

浪人崛起水池的异常任务攻略 浪人崛起水池的异常任务攻略 Mar 26, 2024 pm 08:06 PM

水池的异常是游戏中一个支线任务,很多玩家想知道水池的异常任务怎么完成,其实非常简单,首先我们要掌握在水中拍摄的技术,才可以接取任务,调查恶臭味的来源,之后发现原来是水池下面有很多的尸体,具体内容一起来看看这篇浪人崛起水池的异常任务图文攻略。浪人崛起水池的异常任务攻略1、和饭冢对话,学习在水中拍摄的技术。2、前往下图位置接取水池的异常任务。3、来到任务地点和NPC对话,了解到附近的水池有一股恶臭味。4、前往水池调查。5、大概游到下图位置,潜入到水下,会发现很多的尸体。6、使用相机对尸体进行拍摄。7

NumberFormatException异常解决方法 NumberFormatException异常解决方法 Jul 26, 2023 am 10:26 AM

NumberFormatException异常解决方法:1、使用try-catch语句捕获异常,可以将转换函数放在try块中,并在catch块中处理异常情况;2、可以使用正则表达式验证字符串是否符合数值类型的格式要求,如果字符串不符合要求,我们可以提前进行错误处理;3、使用静态方法isDigit()验证字符是否为数字,如果存在非数字字符,可以提前进行错误处理。

解决Java反射异常(ReflectiveOperationException)的方法 解决Java反射异常(ReflectiveOperationException)的方法 Aug 26, 2023 am 09:55 AM

解决Java反射异常(ReflectiveOperationException)的方法在Java开发中,反射(Reflection)是一种强大的机制,它允许程序在运行时动态地获取和操作类、对象、方法和属性等。通过反射,我们可以实现一些灵活的功能,比如动态创建对象、调用私有方法、获取类的注解等。然而,使用反射也会带来一些潜在的风险和问题,其中之一就是反射异常(

高效解决Java大文件读取异常的实用技巧 高效解决Java大文件读取异常的实用技巧 Feb 21, 2024 am 10:54 AM

高效解决Java大文件读取异常的实用技巧,需要具体代码示例概述:当处理大型文件时,Java可能面临内存溢出、性能下降等问题。本文将介绍几种高效解决Java大文件读取异常的实用技巧,并提供具体代码示例。背景:在处理大型文件时,我们可能需要将文件内容读入内存进行处理,比如搜索、分析、提取等操作。然而,当文件较大时,通常会遇到以下问题:内存溢出:尝试一次性将整个文

MIT最新力作:用GPT-3.5解决时间序列异常检测问题 MIT最新力作:用GPT-3.5解决时间序列异常检测问题 Jun 08, 2024 pm 06:09 PM

今天给大家介绍一篇MIT上周发表的文章,使用GPT-3.5-turbo解决时间序列异常检测问题,初步验证了LLM在时间序列异常检测中的有效性。整个过程没有进行finetune,直接使用GPT-3.5-turbo进行异常检测,文中的核心是如何将时间序列转换成GPT-3.5-turbo可识别的输入,以及如何设计prompt或者pipeline让LLM解决异常检测任务。下面给大家详细介绍一下这篇工作。图片论文标题:Largelanguagemodelscanbezero-shotanomalydete

C++ 函数异常与单测:确保代码健全性 C++ 函数异常与单测:确保代码健全性 May 03, 2024 am 09:18 AM

异常处理和单测是确保C++代码健全性的重要实践。异常通过try-catch块处理,当代码引发异常时会跳转到catch块。单元测试可隔离代码测试,以验证异常处理在不同情况下是否按预期工作。实战案例:sumArray函数计算数组元素总和,并抛出异常以处理空输入数组。单元测试可验证函数在异常情况下的预期行为,如当数组为空时抛出std::invalid_argument异常。结论:通过利用异常处理和单测,我们可以处理异常情况、防止代码崩溃,并确保代码在异常情况下按预期运行。