进制数字的输入和输出

写个程序 , 它读取一个整数并以二进制, 八进制, 和十六进制输出, 以十六进制浮点数输出倒数

public class test1 {
    
    
    public static void main(String[] args) {
    
    
        //写个程序, 它读取一个整数并以二进制, 八进制, 和十六进制输出, 以十六进制浮点数输出倒数
        Scanner input = new Scanner(System.in);
        int a;
        a = input.nextInt();
        System.out.println(Integer.toString(a,2));
        System.out.println(Integer.toString(a,8));
        System.out.println(Integer.toString(a,16));

        System.out.println(Double.toHexString(1.0/a));
    }
}

有两种方法, 第一种方法就是我们使用这个 Interger. ToStirng 但是这种方法呢只能用来处理整数型, 对于这个浮点型的话, 没有太好的处理办法, 我们可以通过这个
toBinaryString , toOctalString, toHexString 三种包装类内置的方法来进行转化
如果想要读取二进制和八进制十六进制的话我们可以通过这个 parseint 来进行转化, 但是这种转化虽然能够实现目标, 但是当你输入非法数字的时候并不能很好的进行处理, 比如你输入八进制的时候你输入了 9

import java.util.Scanner;

public class NumberReader {
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);

        // 读取八进制数字
        System.out.print("请输入一个八进制数字:");
        String octalInput = scanner.next();
        int octalNumber = Integer.parseInt(octalInput, 8);
        System.out.println("读取的八进制数字为:" + octalNumber);

        // 读取二进制数字
        System.out.print("请输入一个二进制数字:");
        String binaryInput = scanner.next();
        int binaryNumber = Integer.parseInt(binaryInput, 2);
        System.out.println("读取的二进制数字为:" + binaryNumber);

        // 读取十六进制数字
        System.out.print("请输入一个十六进制数字:");
        String hexInput = scanner.next();
        int hexNumber = Integer.parseInt(hexInput, 16);
        System.out.println("读取的十六进制数字为:" + hexNumber);
    }
}

在 Java 中,没有直接内置的方法可以直接读取二进制和八进制数字。但是,你可以使用正则表达式来验证输入是否是有效的二进制或八进制数字,并进行相应的转换。在读取到非法字符时,你可以抛出异常来处理。
以下是一个示例程序,演示了如何使用正则表达式进行验证和异常处理:

import java.util.Scanner;

public class NumberReader {
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);

        // 读取八进制数字
        System.out.print("请输入一个八进制数字:");
        String octalInput = scanner.next();
        try {
    
    
            int octalNumber = readOctalNumber(octalInput);
            System.out.println("读取的八进制数字为:" + octalNumber);
        } catch (IllegalArgumentException e) {
    
    
            System.out.println("输入的不是有效的八进制数字。");
        }

        // 读取二进制数字
        System.out.print("请输入一个二进制数字:");
        String binaryInput = scanner.next();
        try {
    
    
            int binaryNumber = readBinaryNumber(binaryInput);
            System.out.println("读取的二进制数字为:" + binaryNumber);
        } catch (IllegalArgumentException e) {
    
    
            System.out.println("输入的不是有效的二进制数字。");
        }
    }

    // 读取并验证八进制数字
    private static int readOctalNumber(String input) {
    
    
        if (!input.matches("[0-7]+")) {
    
    
            throw new IllegalArgumentException();
        }
        return Integer.parseInt(input, 8);
    }

    // 读取并验证二进制数字
    private static int readBinaryNumber(String input) {
    
    
        if (!input.matches("[01]+")) {
    
    
            throw new IllegalArgumentException();
        }
        return Integer.parseInt(input, 2);
    }
}

在这个示例中,我们使用 matches() 方法来检查输入字符串是否与指定的正则表达式匹配。如果字符串不是有效的八进制或二进制数字,则抛出 IllegalArgumentException 异常。否则,我们将字符串转换为整数进行输出。

初次之外我们还以用格式化符号来进行输出

public static void exe1(int n) {
    
    
    	System.out.printf("十进制输出%d\n",n);
		System.out.printf("二进制输出"+Integer.toBinaryString(n)+"\n");
		System.out.printf("十六进制输出"+"%x\n",n);
		System.out.printf("八进制输出%o\n",n);
}

猜你喜欢

转载自blog.csdn.net/everything_study/article/details/132471348