当前位置: 首页 > 知识库问答 >
问题:

使用用户输入将十六进制(0x)或二进制(0b)转换为十进制数

步兴德
2023-03-14

用户用十六进制或二进制输入一个数字(必须以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");
    }

共有1个答案

王云
2023-03-14

出现错误是因为您试图转换整个字符串,包括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位数以内,那也会很有帮助。感谢阅读! } }