十进制数转成二进制数,如十进制数7转成二进制数是111。现在给定一个十进制数x(0<=x<=30000),请编写程序输出所对应的二进制数,并且输出这个二进串中最长连续的“0”有几个? 给出JAVA代码
时间: 2024-09-24 17:19:58 浏览: 35
C++实现读入二进制数并转换为十进制输出
在Java中,你可以使用`Integer.toBinaryString()`函数将十进制数转换为二进制字符串,然后遍历这个字符串来找出最长的连续"0"序列。以下是解决这个问题的一个简单示例:
```java
import java.util.StringTokenizer;
public class DecimalToBinary {
public static void main(String[] args) {
int x = 7; // 或者你想要转换的任何其他十进制数,范围在0到30000之间
String binary = Integer.toBinaryString(x);
System.out.println("二进制数为: " + binary);
int maxZeroCount = 0;
boolean isZero = false;
for (char digit : binary.toCharArray()) {
if (digit == '0') {
isZero = true;
maxZeroCount++;
} else {
isZero = false;
}
}
// 如果字符串开始是0,也需要额外处理
if (binary.charAt(0) == '0')
maxZeroCount++;
System.out.println("最长连续的0有: " + maxZeroCount + "个");
}
}
```
在这个代码中,我们首先获取了十进制数`x`的二进制字符串形式。接着遍历每个字符,当遇到'0'时,计数器`maxZeroCount`加一;当遇到非'0'字符时,标记`isZero`为false并检查当前`maxZeroCount`是否需要更新。最后,由于字符串可能以0开头,我们需要再检查一次。
运行此程序会输出对应于`x`的二进制数以及最长连续的0的数量。记得替换`int x = 7`为你实际需要转换的值。如果`x`超出范围(0到30000),代码依然可以运行,但是结果可能会不对。
阅读全文