如何检查是否一个字符串是一个数字 [英] How to check if a string is a number

查看:122
本文介绍了如何检查是否一个字符串是一个数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在转换核心的Java到地图问题。

下面是要求:结果
下面给出

一个String数组

 字符串str [] = {ABC,123,高清,456,GHI,789,LMN,101112, OPQ};

其转换成地图使得所得输出低于

输出

 ======
键值
======
ABC真
123假
真正的高清
456假

上述应打印的阵列中的每个元素。我已经写了code,但它不工作,我卡住了。请让我知道如何解决。提前致谢。

 进口的java.util.HashMap;
进口java.util.Iterator的;
进口的java.util.Map;公共类CoversionToMap {/ **
 * @参数ARGS
 * /
公共静态无效的主要(字串[] args){
    字符串str [] = {ABC,123,DEF,456,GHI,789,LMN,101112,OPQ};
    地图M =新的HashMap();
    的for(int i = 0; I< str.length;我++){
        如果(的Integer.parseInt(STR [I])小于0){
            m.put(STR [I]中,真);
        }其他{
            m.put(STR [I]中,假);
        }
    }
    //最后打印地图值
    printMap(米);
}公共静态无效printMap(地图MP){
        迭代它= mp.entrySet()迭代器()。
        而(it.hasNext()){
            Map.Entry对=(Map.Entry的)it.next();
            的System.out.println(pairs.getKey()+=+ pairs.getValue());
        }
}
}

例外:


异常线程mainjava.lang.NumberFormatException:对于输入字符串:ABC
    在java.lang.NumberFormatException.forInputString(来源不明)
    在java.lang.Integer.parseInt(来源不明)
    在java.lang.Integer.parseInt(来源不明)
    在CoversionToMap.main(CoversionToMap.java:22)


解决方案

每个人都在使用异常处理这个建议,并没有什么特殊的使用在这里这样的例外,以保证,你不尝试左转在你的车,如果你崩溃向右走是吗?像这样的东西应该这样做。

 地图<字符串,布尔值> M =新的HashMap<字符串,布尔值>();
对于(字符串str:可疑交易报告){
    m.put(STR,isInteger(STR));
}公共布尔isInteger(字符串str){
    INT大小= str.length();    的for(int i = 0; I<大小;我++){
        如果(!Character.isDigit(str.charAt(ⅰ))){
            返回false;
        }
    }    返回尺寸> 0;
}

更清晰,更高效,捕捉引发异常,即使有99%的整数作为甚至没有必要的整型值,因此没有转换所需。

I have conversion to Map problem in Core Java.

Below is requirement:
Given a String array below

String str[] = {"abc","123","def","456","ghi","789","lmn","101112","opq"};          

Convert it into a Map such that the resultant output is below

Output

======      ======         
key         Value        
======      ======                  
abc          true       
123          false       
def          true      
456          false

The above should be printed for each element in the array. I have written the code but it's not working and I'm stuck. Please let me know how it can be resolved. Thanks in advance.

import java.util.HashMap;       
import java.util.Iterator;       
import java.util.Map;       

public class CoversionToMap {

/**
 * @param args
 */
public static void main(String[] args) {
    String str[] = {"abc","123","def","456","ghi","789","lmn","101112","opq"};
    Map m = new HashMap();
    for(int i=0;i<str.length;i++){
        if(Integer.parseInt(str[i]) < 0){
            m.put(str[i],true);
        }else{
            m.put(str[i],false);
        }
    }
    //Print the map values finally
    printMap(m);
}   

public static void printMap(Map mp) {
        Iterator it = mp.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry)it.next();          
            System.out.println(pairs.getKey() + " = " + pairs.getValue());
        }
}  
}           

exception:

Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"       
    at java.lang.NumberFormatException.forInputString(Unknown Source)       
    at java.lang.Integer.parseInt(Unknown Source)       
    at java.lang.Integer.parseInt(Unknown Source)       
    at CoversionToMap.main(CoversionToMap.java:22)       

解决方案

Everyone is suggesting using exception handling for this, there is nothing exceptional here to warrant using exceptions like this, you don't try turning left in your car and if you crash go right do you? Something like this should do it

Map<String, Boolean> m = new HashMap<String, Boolean>();
for (String str: strs) {
    m.put(str, isInteger(str));
}

public boolean isInteger(String str) {
    int size = str.length();

    for (int i = 0; i < size; i++) {
        if (!Character.isDigit(str.charAt(i))) {
            return false;
        }
    }

    return size > 0;
}

Much clearer and more efficient that catching throwing exception, even when there are 99% integers as the integer value is not even needed so no conversion required.

这篇关于如何检查是否一个字符串是一个数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆