Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Number Formatting_Numberformatexception - Fatal编程技术网

Java:格式化数字错误?

Java:格式化数字错误?,java,string,number-formatting,numberformatexception,Java,String,Number Formatting,Numberformatexception,我遇到了一个关于使用字符串输入和输出转换数字格式的类的问题: public class Conversion{ static int result; public static String fromHexToDec (String clientInput) { result= Integer.parseInt(clientInput, 10); return Integer.toString(result); } public static String fromDecT

我遇到了一个关于使用字符串输入和输出转换数字格式的类的问题:

public class Conversion{

static int result;

public static String fromHexToDec (String clientInput) {
    result= Integer.parseInt(clientInput, 10);
    return Integer.toString(result);
}

public static String fromDecToHex (String clientInput) {
    result= Integer.parseInt(clientInput, 16);
    return Integer.toString(result);
}

public static String fromOctTo4 (String clientInput) {
    result= Integer.parseInt(clientInput, 4);
    return Integer.toString(result);
}

public static String from4ToOct(String clientInput) {
    result= Integer.parseInt(clientInput, 8);
    return Integer.toString(result);
}

public static String formBinToDec(String clientInput) {
    result= Integer.parseInt(clientInput, 10);
    return Integer.toString(result);
}

public static String fromDecToBin(String clientInput) {
    result= Integer.parseInt(clientInput, 2);
    return Integer.toString(result);
}

public static String from5To7(String clientInput) {
    result= Integer.parseInt(clientInput, 7);
    return Integer.toString(result);
}

public static String from7To5(String clientInput) {
    result= Integer.parseInt(clientInput, 5);
    return Integer.toString(result);
}
}

我在尝试从主方法中的HexToDec运行时收到此错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "C"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Konverzija.fromHexToDec(Conversion.java:9)
at Test.main(Test.java:5)
有人能帮忙吗?

因为

public static String fromHexToDec (String clientInput) {
    result= Integer.parseInt(clientInput, 10);
    return Integer.toString(result);
}
正在将基数
10
传递给
parseInt()
(十进制无效)。像这样使用16

public static String fromHexToDec (String clientInput) {
    result= Integer.parseInt(clientInput, 16);
    return Integer.toString(result);
}
fromDecToHex
可能应该是

public static String fromDecToHex(String clientInput) {
    int result = Integer.parseInt(clientInput, 10);
    return Integer.toString(result, 16);
}

第二种方法的潜在优势是零填充。

整数。parseInt(字符串s,整数基数)
应用于解析字符串值,或将字符串值“转换”为整数值。本例中的基数是您期望该数字的字符串表示形式具有的基数。这意味着如果您希望
s
是一个数字的十六进制表示形式,则应使用16作为基数,以此类推。
Integer.toString(int-value,int-radix)
方法正好相反:用于将整数
value
转换为给定基数中的字符串表示形式。在本例中,您将为十六进制表示指定16。您为分析指定的所有基数值都是错误的,并且您错过了调用
toString()
的基数。如果要使用默认的基数10(十进制),则只能省略这些方法的基数参数。
您的代码应该如下所示:

public class Conversion{

    static int result;

    public static String fromHexToDec (String clientInput) {
        result= Integer.parseInt(clientInput, 16);
        return Integer.toString(result);
    }

    public static String fromDecToHex (String clientInput) {
        result= Integer.parseInt(clientInput);
        return Integer.toString(result, 16);
    }

    public static String fromOctTo4 (String clientInput) {
        result= Integer.parseInt(clientInput, 8);
        return Integer.toString(result, 4);
    }

    public static String from4ToOct(String clientInput) {
        result= Integer.parseInt(clientInput, 4);
        return Integer.toString(result, 8);
    }

    public static String formBinToDec(String clientInput) {
        result= Integer.parseInt(clientInput, 2);
        return Integer.toString(result);
    }

    public static String fromDecToBin(String clientInput) {
        result= Integer.parseInt(clientInput);
        return Integer.toString(result, 2);
    }

    public static String from5To7(String clientInput) {
        result= Integer.parseInt(clientInput, 5);
        return Integer.toString(result, 7);
    }

    public static String from7To5(String clientInput) {
        result= Integer.parseInt(clientInput, 7);
        return Integer.toString(result, 5);
    }
}

所以“基数”并不是定义转换的格式,而是从哪个格式开始?@dzenesiz正确。当您调用
parseInt()
时,它是from;当您调用
toString()
时,它是to。
public class Conversion{

    static int result;

    public static String fromHexToDec (String clientInput) {
        result= Integer.parseInt(clientInput, 16);
        return Integer.toString(result);
    }

    public static String fromDecToHex (String clientInput) {
        result= Integer.parseInt(clientInput);
        return Integer.toString(result, 16);
    }

    public static String fromOctTo4 (String clientInput) {
        result= Integer.parseInt(clientInput, 8);
        return Integer.toString(result, 4);
    }

    public static String from4ToOct(String clientInput) {
        result= Integer.parseInt(clientInput, 4);
        return Integer.toString(result, 8);
    }

    public static String formBinToDec(String clientInput) {
        result= Integer.parseInt(clientInput, 2);
        return Integer.toString(result);
    }

    public static String fromDecToBin(String clientInput) {
        result= Integer.parseInt(clientInput);
        return Integer.toString(result, 2);
    }

    public static String from5To7(String clientInput) {
        result= Integer.parseInt(clientInput, 5);
        return Integer.toString(result, 7);
    }

    public static String from7To5(String clientInput) {
        result= Integer.parseInt(clientInput, 7);
        return Integer.toString(result, 5);
    }
}