java - 如何获取整数输入的最后一个数字

标签 java exception int number-formatting

不使用内置 Java 方法的二进制到十进制转换器。它必须自动执行此转换。当我在输入过程中获得整数的最后一个数字时,它会给我一个数字格式异常。

import java.util.Scanner;

public class Homework02 {

    public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter an 8-bit binary number:");
        int binary = keyboard.nextInt();
        int copyBinary = binary;
        int firstDigit = Integer.parseInt(Integer.toString(copyBinary).substring(0, 1));
        int secondDigit = Integer.parseInt(Integer.toString(copyBinary).substring(1, 2));
        int thirdDigit = Integer.parseInt(Integer.toString(copyBinary).substring(2, 3));
        int fourthDigit = Integer.parseInt(Integer.toString(copyBinary).substring(3, 4));
        int fifthDigit = Integer.parseInt(Integer.toString(copyBinary).substring(4, 5));
        int sixthDigit = Integer.parseInt(Integer.toString(copyBinary).substring(5, 6));
        int seventhDigit = Integer.parseInt(Integer.toString(copyBinary).substring(6, 7));
        int eigthDigit = Integer.parseInt(Integer.toString(copyBinary).substring(7));

        firstDigit = firstDigit*128;
        secondDigit = secondDigit*64;
        thirdDigit = thirdDigit*32;
        fourthDigit = fourthDigit*16;
        fifthDigit = fifthDigit*8;
        sixthDigit = sixthDigit*4;
        seventhDigit = seventhDigit*2;
        eigthDigit = eigthDigit*1;

        System.out.println(firstDigit+" "+secondDigit+" " +thirdDigit+" "+fourthDigit+" "+fifthDigit+" "+sixthDigit+" "+seventhDigit+" "+eigthDigit);

        System.out.println(copyBinary + " in decimal form is " + (firstDigit+secondDigit+thirdDigit+fourthDigit+fifthDigit+sixthDigit+seventhDigit+eigthDigit));
    }

}

最佳答案

解析和格式化 int 时,前导零将被忽略。最简单的解决方案是将完整值保留为字符串,然后才解析各个数字:

String binary = keyboard.next();
int firstDigit = Integer.parseInt(binary.substring(0, 1));
// etc.

关于java - 如何获取整数输入的最后一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101469/

相关文章:

django - 是否应该捕获来自 HTTP 参数问题的不可恢复异常?

Perl DBI-捕获错误

C++ 使用 (void*) 转换为 int 进行比较?

c# - Convert.ToInt32() 和 int() 之间有什么区别

java - 发送数据包 header 和主体

java - 数字解析库

python - 在 python 中定位(文件/行)构造函数的调用

java - CLOB 到二进制流的转换

java - 用于学习目的的 Java 简单开源 DHT 实现

swift - Float 到 Int 转换 Swift