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);
}
}