我正在尝试在java中编写二进制数字类..但如果我发送一个以0开头的整数,则该数字未正确保存。我知道问题是什么,但我无法找到解决方案。在c ++中,我使用了一个浮点而不是一个int,但在java中似乎不起作用。
import java.util.*;
class BinaryNumber {
private boolean b[];
public void setBit(int index,boolean value){
b[index]=value;
}
public boolean getBit(int index){
return b[index];
}
public void clear(){
for(int i=0;i<8;i++)
b[i]=false;
}
public BinaryNumber() {
b=new boolean[8];
for(int i=0;i<8;i++){
b[i]=false;
}
}
public void inputNumber(int a){
if(a>11111111) {
System.out.println(" Exception Number to Large Nothing Entered ");
}
else {
int number=a;
int c=7;
int digit=0;
for(int i=0;i<8;i++) {
digit=number%10;
if(digit==1){
b[c]=true;
}
else if (digit==0) {
b[c]=false;
}
else {
System.out.println(" Only Binary Number Accepted ");
clear();
i=8; //break
}
number=number/10;
c--;
}
}
}
public void outputNumber(){
for(int i=0;i<8;i++){
if(b[i]==true){
System.out.print("1");
}
else{
System.out.print("0");
}
}
System.out.println("");
}
}
class Q5{
public static void main(String args[]){
BinaryNumber a=new BinaryNumber();
a.inputNumber(00100110);
a.outputNumber();
BinaryNumber b=new BinaryNumber();
b.inputNumber(00100111);
b.outputNumber();
}
}
答案 0 :(得分:7)
以0
开头的数字被Java解释为八进制。
答案 1 :(得分:0)
数字本身和它在语言中的表示之间存在差异。例如,“0xD”(基数16),“13”(基数10),“015”(基数8)和“b1101”(基数2)是指代相同数字的四种不同表示。