Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获非数字字符的异常_Java_String_Exception_Exception Handling - Fatal编程技术网

Java 捕获非数字字符的异常

Java 捕获非数字字符的异常,java,string,exception,exception-handling,Java,String,Exception,Exception Handling,我试图将一个字符串转换为它的数字值,按每个字符的大小进行转换。问题是,如果字符串有字母表或空格(基本上是数字以外的任何内容),我想抛出一个异常。但它不会抛出异常,并继续将基本上任何字符串转换为数字格式。我错过了什么 编辑:我无法使用库函数进行转换 for (int i = str.length() - 1; i >= var; i--) { if (str.charAt(i) >= '0' && str.charAt(0) <=

我试图将一个字符串转换为它的数字值,按每个字符的大小进行转换。问题是,如果字符串有字母表或空格(基本上是数字以外的任何内容),我想抛出一个异常。但它不会抛出异常,并继续将基本上任何字符串转换为数字格式。我错过了什么

编辑:我无法使用库函数进行转换

for (int i = str.length() - 1; i >= var; i--) {
                if (str.charAt(i) >= '0' && str.charAt(0) <= '9') {
                    sum += (str.charAt(i) - '0') * Math.pow(10, power);
                    power++;
                } else {
                    throw new Exception();
                }
            }
for(int i=str.length()-1;i>=var;i--){

if(str.charAt(i)>='0'&&str.charAt(0)您的if语句中有一个输入错误

if (str.charAt(i) >= '0' && str.charAt(0) <= '9') {

if(str.charAt(i)>='0'&&str.charAt(0)='0'&&str.charAt(i)还不能评论,所以写在这里


您可能不需要str.charAt(0)
(str.charAt(i)-“0”)
您需要将此值转换为int,然后与Math.pow()相乘。现在,结果字符的ascii值正在被乘以。for循环中的var是什么?是0吗?@javaguy,因此字符串中的第一个字符可以是“-”或“+”。因此在此之前,我有另一个if条件来检查第一个字符是否是这两个字符中的一个,然后将var设置为1,这样for循环将只迭代到第二个最重要的位置。如果不是,那么var是0,循环继续到0。谢谢!我纠正了这个问题。但是现在它对无效字符之前的任何内容都返回null,然后继续返回字符串的其余部分作为long。因此,“123hj34”返回为:null 34I已考虑负数。因此在此之前,我有另一个if条件来检查第一个字符是“-”还是“+”,然后将var设置为1,这样for循环将只迭代到第二个最重要的位置。如果不是,则var为0,循环将继续到0。
if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {