在Java中测试给定数字是否为十六进制?

时间:2012-05-21 13:15:46

标签: java exception hex

有人可以帮忙吗?

测试给定数字是否为十六进制的程序?该号码必须从用户输入。如果它不是十六进制,则必须抛出异常。例外必须是用户定义的。

4 个答案:

答案 0 :(得分:5)

使用Integer.parseInt(string, 16)

如果无法在base-16中解析NumberFormatException,则会抛出string。如果你想要一个用户定义的异常,那么抓住NumberFormatException,然后抛出你自己的异常。

答案 1 :(得分:4)

boolean isHex = false;
try{
    new BigInteger("ffff", 16);
    isHex = true;
}
catch(NumberFormatException ex) { }

您可以使用自己的文本生成异常:

throw new Exception("Some text");

答案 2 :(得分:2)

可替换地,

if(!text.matches("\\p{XDigit}+") {
   throw new NotHexadecimalInputException(text);
}

答案 3 :(得分:0)

包try_catch_review;

*我自己的例外***

public class ItisNotHexDecException extends Exception{

    public ItisNotHexDecException()
    {
        System.out.println(" it is not hexa-decimal ");
    }


}

* *主程序* 此处使用上述异常 ***

import java.io*;

public class hexadec_orNot {

    public static void main(String[] args) throws ItisNotHexDecException{

        int i;
        String s =new String();
        BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
        System.out.println(" enter the number ");

        try{
            s=br.readLine();
            i=Integer.parseInt(s,16);
            System.out.println("entered number is hexaDecimal :   " + i);

        }  catch(NumberFormatException e)  {

            try{
            throw new ItisNotHexDecException();
            }catch(ItisNotHexDecException ee)
            {
                System.out.println("caught exception " + ee);
            }

        }  catch(Exception e)
        {
            System.out.println(" generic ");
        }
    }

}

@HI Oli - 您的意见是值得的,我感谢您。我所做的你可以在上面的程序中看到。这是你想让我相信我想要的东西。

添加到我在此页面的开头部分中所述的原始查询;我需要通知你们,必须从用户接受一个数字并分配给一个字符串变量 - 我做了这个部分,你可以在上面的程序中看到。

这个问题的主要部分是“字符串函数”必须用于执行处理。这正是我用来学习核心java的书中所说的。

有人可以跳进来帮我理解这个问题。我认为我做得对,因为你们可以看到上面的程序,我自己就是例外。