明顯是循環沒有控制好,導致死循環了。
B. java編程:進制轉換
Java中的進制轉換是通過基本數據類型類中的相應方法實現的。舉個例子:
public class IntegerChange {
public static void main(String[] args) {
String nm = new String("445");
int n = Integer.parseInt(nm);
System.out.println("十進製表示:" + n);
System.out.println("二進製表示:" + Integer.toBinaryString(n));
System.out.println("八進製表示:" + Integer.toOctalString(n));
System.out.println("十六進製表示:" + Integer.toHexString(n));
}
}
輸出結果:
十進製表示:445
二進製表示:110111101
八進製表示:675
十六進製表示:1bd
至於八進制轉換為十進制,十六進制,二進制等等都有相應的方法,具體的可以查看Java幫助文檔。
希望對你有所幫助。
C. 用java 寫一個10進制轉16進制的演算法 怎麼寫
publicclassTest{
publicstaticvoidmain(String[]args){
inta=1000;
System.out.println(newTest().get16Jz(a));
}
publicStringget16Jz(intn){
if(n/16<16){
returngetExp(n/16)+""+getExp(n%16);
}
returnget16Jz(n/16)+""+n%16;
}
publicStringgetExp(inta){
if(a<10){
returna+"";
}
if(a>=10){
switch(a){
case10:return"a";
case11:return"b";
case12:return"c";
case13:return"d";
case14:return"e";
case15:return"f";
}
}
returna+"";
}
}
D. java實現:整數進制相互轉換
java實現:整數進制相互轉換的方法:
十進制轉為二進制、八進制、十六進制, 用 Integer.toXXXString()方法
(1)十進制轉為二進制: Integer.toBinaryString(int i);
public static String toBinaryString(inti):以二進制(基數 2)無符號整數形式返回一個整數參數的字元串表示形式。
(2)十進制轉為8進制 :Integer.toOctalString(int i);
public static String toOctalString(inti):以八進制(基數 8)無符號整數形式返回一個整數參數的字元串表示形式。
(3)十進制轉為16進制: Integer.toHexString(int i);
public static String toHexString(inti):以十六進制(基數 16)無符號整數形式返回一個整數參數的字元串表示形式。
舉例:
Stringbin=Integer.toBinaryString(10);
Stringoct=Integer.toOctalString(10);
Stringhex=Integer.toHexString(10);
2.十六進制、八進制、二進制轉為十進制(有兩種方法):parseInt() 和valueOf()。
Integer.parseInt(String s,int radix);
public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二個參數作為指定的基數,將字元串參數解析為有符號的整數;
Integer.valueOf(String s,int radix);
public static Integer valueOf(Strings, intradix) throws NumberFormatException{}返回一個 Integer 對象,該對象中保存了用第二個參數提供的基數進行解析時從指定的 String 中提取的值。
舉例:
try{
inti=Integer.parseInt("a",16);
//輸出為10進制數10
System.out.println(i);
}catch(Exceptione){
e.printStackTrace();
}
try{
//十六進制轉成十進制
Stringhex=Integer.valueOf("FFFF",16).toString();
System.out.println(hex);
//八進制轉成十進制
Stringoct=Integer.valueOf("12",8).toString();
System.out.println(oct);
//二進制轉十進制
Stringbin=Integer.valueOf("0101",2).toString();
System.out.println(bin);
}catch(Exceptione){
e.printStackTrace();
}
E. java 十進制轉二進制!
十進制數轉二進制數的演算法如下:
1. 十進制整數轉換為二進制整數
十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余
數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
2.十進制小數轉換為二進制小數
十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又
得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。然後把取出的整數部分按順序排列起來,先取的整數作為
二進制小數的高位有效位,後取的整數作為低位有效位。
下面就給出根據十進制數轉二進制數的演算法所寫的一段Java程序以供大家參考:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十進制數"+d+"轉成二進制數為:"+s);
}
/**
* 十進制數轉二進制數
* @param d 十進制數
* @return 十進制數轉換成二進制的字元串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十進制整數部分轉二進制數
* @param d 十進制數
* @return 十進制整數部分轉換成二進制的字元串
*/
public String decimal2BinaryStr_Inte(double d){
// return Integer.toBinaryString((int)d);
/*
* 本來利用上面的Integer.toBinaryString(int)就可以得到整數部分的二進制結果,
* 但為了展示十進制轉二進制的演算法,現選擇以下程序來進行轉換
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true){
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0){
result+=" ";
}
if(inte==0){
while(index%4!=0){
result+="0";
index++;
}
break;
}
}
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i>0; i--){
cc[cc.length-i] = c[i-1];
}
return new String(cc);
}
/**
* 十進制小數部分轉二進制
* @param d 十進制數
* @return 十進制小數部分轉換成二進制小數的字元串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十進制小數部分轉二進制
* @param d 十進制數
* @param scale 小數部分精確的位數
* @return 十進制小數部分轉換成二進制小數的字元串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//為了防止程序因所轉換的數據轉換後的結果是一個無限循環的二進制小數,因此給其一個默認的精確度
if(scale==0){
scale = (String.valueOf(deci).length()-2)*4;
}
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true){
if(deci==0 || index==scale){
while(index%4!=0){
inteStr.append("0");
index++;
}
break;
}
if(index==0){
inteStr.append(".");
}
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0){
inteStr.append(" ");
}
}
return inteStr.toString();
}
/**
* 提供精確的減法運算。
* @param v1 被減數
* @param v2 減數
* @return 兩個參數的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
}
例如將十進制數1234.5轉成二進制數為:0100 1101 0010.1000
F. 編寫將任意二進制數轉換為十進制數的java程序
java有現成的
二進制轉十進制
Integer.valueOf("0101",2).toString()
另外還有
十進制轉成十六進制:
Integer.toHexString(int i)
十進制轉成八進制
Integer.toOctalString(int i)
十進制轉成二進制
Integer.toBinaryString(int i)
十六進制轉成十進制
Integer.valueOf("FFFF",16).toString()
八進制轉成十進制
Integer.valueOf("876",8).toString()
G. 求java十進制轉二進制代碼
下面是根據十進制數轉二進制數的演算法所寫的一段Java程序示例代碼:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十進制數"+d+"轉成二進制數為:"+s);
}
/**
* 十進制數轉二進制數
* @param d 十進制數
* @return 十進制數轉換成二進制的字元串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十進制整數部分轉二進制數
* @param d 十進制數
* @return 十進制整數部分轉換成二進制的字元串
*/
public String decimal2BinaryStr_Inte(double d){
// return Integer.toBinaryString((int)d);
/*
* 本來利用上面的Integer.toBinaryString(int)就可以得到整數部分的二進制結果,
* 但為了展示十進制轉二進制的演算法,現選擇以下程序來進行轉換
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true){
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0){
result+=" ";
}
if(inte==0){
while(index%4!=0){
result+="0";
index++;
}
break;
}
}
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i>0; i--){
cc[cc.length-i] = c[i-1];
}
return new String(cc);
}
/**
* 十進制小數部分轉二進制
* @param d 十進制數
* @return 十進制小數部分轉換成二進制小數的字元串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十進制小數部分轉二進制
* @param d 十進制數
* @param scale 小數部分精確的位數
* @return 十進制小數部分轉換成二進制小數的字元串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//為了防止程序因所轉換的數據轉換後的結果是一個無限循環的二進制小數,因此給其一個默認的精確度
if(scale==0){
scale = (String.valueOf(deci).length()-2)*4;
}
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true){
if(deci==0 || index==scale){
while(index%4!=0){
inteStr.append("0");
index++;
}
break;
}
if(index==0){
inteStr.append(".");
}
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0){
inteStr.append(" ");
}
}
return inteStr.toString();
}
/**
* 提供精確的減法運算。
* @param v1 被減數
* @param v2 減數
* @return 兩個參數的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
}
例如將十進制數1234.5轉成二進制數為:0100 1101 0010.1000
H. java二進制轉化為十進制 要純演算法的
二進制的1101轉化成十進制
1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13
轉化成十進制要從右到左用二進制的每個數去乘以2的相應次方
不過次方要從0開始
I. 怎麼用java實現 進制轉換
例如:把16進制的數轉換為10進制的
可以通過Integer.parseInt(String s, int radix)方法實現,radix是進制,可以是2(二進制),10(十進制),16(十六進制)等。
舉例:
System.out.print(Integer.parseInt("F", 16)););
結果就是:15
J. 用java寫一個16進制轉10進制演算法的程序!
首先16進制裡面a代表的是10.b 代表11,f代表15
16進制就是每16進1
然後利用這個 原理。得到如下代碼。經測試,下邊代碼兩次輸出的結果是相同的。
public class test1 {
public static void main(String[] args) {
String str="aabbcc";
String myStr[]={"a","b","c","d","e","f"};
int result=0;
int n=1;
for(int i=str.length()-1;i>=0;i--){
String param=str.substring(i,i+1);
for(int j=0;j<myStr.length;j++){
if(param.equalsIgnoreCase(myStr[j])){
param="1"+String.valueOf(j);
}
}
result+=Integer.parseInt(param)*n;
n*=16;
}
System.out.println(result);
System.out.println(Integer.parseInt(str, 16));
}
}
還有給的分太少啦。。。