用户用十六进制或二进制输入一个数字(必须以0x或0b为前缀,如果没有给出错误信息)
我不能用基数,我只是用整数。parseInt(s)
我不知道怎样才能使这个计划奏效。。请帮帮我,我还缺什么?
import java.util.Scanner;
public class conversion {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//ask user to enter either hex or binary
System.out.println("Please enter a hex (0x) or binary (0b) number: ");
//read input as string
String hexString = input.nextLine();
String binString = input.nextLine();
//if prefix (0x)
if ((hexString.substring(0,2)).equals("0x")) {
int hex = Integer.parseInt(hexString, 16);
System.out.println("Converting from base-16 to base-10.\n" + hex);
//if there are no digits or invalid digits after Ox
//if ((hexString.substring(beginIndex))) {
// System.out.println("Error parsing base-16 number");
//}
//if prefix (0b)
} else if ((binString.substring(0,2)).equals("0b")) {
int bin = Integer.parseInt(binString, 2);
System.out.println("Converting from base-2 to base-10.\n" + bin);
//if there are no digits or invalid digits after Ob
//if ((binString.substring(beginIndex))) {
// System.out.println("Error parsing base-2 number");
//}
} else {
System.out.println("I don't know how to covert that number");
}
出现错误是因为您试图转换整个字符串,包括0x或0b。在转换之前,需要将其从字符串中删除。以下是完整的工作示例:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//ask user to enter either hex or binary
System.out.println("Please enter a hex (0x) or binary (0b) number: ");
//read input as string
String hexString = input.nextLine();
String binString = input.nextLine();
//if prefix (0x)
if (hexString.startsWith("0x")) {
hexString = hexString.replaceAll("0x", "");
int hex = Integer.parseInt(hexString, 16);
System.out.println("Converting from base-16 to base-10.\n" + hex);
//if there are no digits or invalid digits after Ox
//if ((hexString.substring(beginIndex))) {
// System.out.println("Error parsing base-16 number");
//}
//if prefix (0b)
} else if (binString.startsWith("0b")) {
binString = binString.replaceAll("0x", "");
int bin = Integer.parseInt(binString, 2);
System.out.println("Converting from base-2 to base-10.\n" + bin);
//if there are no digits or invalid digits after Ob
//if ((binString.substring(beginIndex))) {
// System.out.println("Error parsing base-2 number");
//}
} else {
System.out.println("I don't know how to covert that number");
}
}
为了优化你的代码,你不需要像这里一样使用input.nextLine();
两次:
//read input as string
String hexString = input.nextLine();
String binString = input.nextLine();
但您可以使用单个字符串输入,如://读取输入作为字符串控制台输入=输入。nextLine();
//if prefix (0x)
if (consoleInput.startsWith("0x")) {
consoleInput = consoleInput.replaceAll("0x", "");
// ...
} else if (consoleInput.startsWith("0b")) {
consoleInput = consoleInput.replaceAll("0x", "");
int bin = Integer.parseInt(consoleInput, 2);
// ...
} else {
System.out.println("I don't know how to covert that number");
}
如果由于某种原因,用户输入不能转换,我也很乐意添加试抓。下面是一个工作示例:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//ask user to enter either hex or binary
System.out.println("Please enter a hex (0x) or binary (0b) number: ");
//read input as string
String consoleInput = input.nextLine();
//if prefix (0x)
if (consoleInput.startsWith("0x")) {
consoleInput = consoleInput.replaceAll("0x", "");
try {
int hex = Integer.parseInt(consoleInput, 16);
System.out.println("Converting from base-16 to base-10.\n" + hex);
} catch (NumberFormatException ex) {
System.out.println("Error converting string: " + consoleInput);
}
} else if (consoleInput.startsWith("0b")) {
consoleInput = consoleInput.replaceAll("0x", "");
try {
int bin = Integer.parseInt(consoleInput, 2);
System.out.println("Converting from base-2 to base-10.\n" + bin);
} catch (NumberFormatException ex) {
System.out.println("Error converting string: " + consoleInput);
}
} else {
System.out.println("I don't know how to covert that number");
}
}
我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,
问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用:
本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只
本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分
Python3 实例 以下代码用于实现十进制转二进制、八进制、十六进制: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 获取用户输入十进制数 dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为二进制为:", bin(dec
我想知道如何将舞蹈方法的十进制结果包含到灯光方法中。例如,在这个程序中,如果我输入5F,十进制结果将是95。我希望95在light方法中显示为静态int变量,以便转换为二进制数。如果你能告诉我如何将十六进制数限制在2位数以内,那也会很有帮助。感谢阅读! } }