-1

有人可以帮忙吗?

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

4

4 回答 4

5

使用Integer.parseInt(string, 16).

NumberFormatException如果string无法以 base-16 解析,则会抛出。如果您想要一个用户定义的异常,则捕获NumberFormatException,并抛出您自己的异常。

于 2012-05-21T13:17:51.500 回答
4
boolean isHex = false;
try{
    new BigInteger("ffff", 16);
    isHex = true;
}
catch(NumberFormatException ex) { }

您可以使用自己的文本生成异常,如下所示:

throw new Exception("Some text");
于 2012-05-21T13:18:05.493 回答
2

或者,

if(!text.matches("\\p{XDigit}+") {
   throw new NotHexadecimalInputException(text);
}
于 2012-05-21T13:37:47.577 回答
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 的一本书中所说的。

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

于 2012-05-22T02:53:22.323 回答