㈠ java程序在控制台輸入一個正整數,要求以二進制的形式輸出
利用JavaAPI直接轉換
十進制數如何轉換為二進制數,這在javaAPI 中有一個方法,Integer.toBinaryString( ) 括弧裡面寫上你要轉換的十進制數,這樣可以直接轉換。例如:
publicstaticvoidmain(String[]args){
十進制轉換為二進制
System.out.println(Integer.toBinaryString(10));
}
通過求余,求商,並計算值(例如:把二進制的1010 直接輸成十進制的1010)實現
publicstaticvoidmain(String[]args){但是這種方法存在一個問題:因為int類型是有取值范圍的,如果轉換的二進制數字超出了范圍(例如:10011100110110)這個數字明顯超出了int的取值范圍,這樣我們用int類型的sum進行存儲的時候他就會自動轉換為一個其他的數字。並且這個方法沒有辦法求負數的二進制數。
//TODOAuto-generatedmethodstub
inta=123;//定義一個變數並賦給他一個十進制的值
intremainder;//定義一個變數用於存儲余數
intsum=0;//定義一個變數用於存放和
intk=1;//定義一個變數控制位數
while(a!=0){
remainder=a%10;//對目標數字求余
a/=2;//對目標數字求商
sum=sum+remainder*k;//求和
k*=10;//改變位數
}
System.out.println("10進制的123轉換為2進制結果為:"+sum);
}
在方法二的基礎上使用字元串對結果集進行存儲
publicstaticvoidmain(String[]args){用這種方法就能很好解決int類型的越界問題,能解決所有的十進制轉換二進制的問題。
intn=-10;
Stringresult="";
booleanminus=false;
//如果該數字為負數,那麼進行該負數+1之後的絕對值的二進制碼的對應位取反,然後將它保存在result結果中
if(n<0){
minus=true;
n=Math.abs(n+1);
}
while(true){
intremainder=(!minus&&n%2==0)||(minus&&n%2==1)?0:1;
//將余數保存在結果中
result=remainder+result;
n/=2;
if(n==0){
break;
}
}
//判斷是否為負數,如果是負數,那麼前面所有位補1
if(minus){
n=result.length();
for(inti=1;i<=32-n;i++){
result=1+result;
}
}
System.out.println(result);
}
㈡ java 如何向程序中輸入一個整數
public class Test{
int i;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
if(i>100){
System.out.println("應小於100");
}
if(i<10){
System.out.println("應小於100");
}
}
在main方法里寫
發的有點遲了上面的答案很好啊,連需輸入都有了的,貌似能問這個應該是個初學者,後面的看不懂吧