朋友們幫我看看出了什么問題
/*
?* 把輸入的一個十進(jìn)制數(shù)輸出為用二進(jìn)制表示的數(shù)
?*
?*/
import java.util.Scanner;
public class CastBinaryX{
?? ?//整數(shù)部分轉(zhuǎn)成二進(jìn)制的方法
?? ?public static void intCast(int i,StringBuffer buffer){
?? ??? ?for(;i>0;i=i/2){
?? ??? ??? ?buffer.append(i%2);
?? ??? ??? ?System.out.println(i%2);
?? ??? ?}
?? ??? ?buffer.reverse();//實現(xiàn)反轉(zhuǎn)
?? ?}
?? ?//小數(shù)部分轉(zhuǎn)成二進(jìn)制的方法
?? ?public static void doubleCast(double k ,StringBuffer buffer){
?? ??? ?for(;k>0.000001;k=k*2){
?? ??? ??? ?buffer.append(".");
?? ??? ??? ?buffer.append((int)(k*2));
?? ??? ??? ?System.out.println((int)(k*2));
?? ??? ?}
?? ?}
?? ?public static void main(String[] args){
?? ??? ?Scanner in = new Scanner(System.in);
?? ??? ?StringBuffer sb = new StringBuffer();
?? ??? ?double num = in.nextDouble();//輸入的是12.125
?? ??? ?intCast((int)num,sb);
?? ??? ?double k= num-(int)num;
?? ??? ?System.out.println(k);
?? ??? ?doubleCast(k,sb);
?? ??? ?System.out.println(sb);
?? ??? ?in.close();?? ??? ?
?? ?}
}
輸出的是:2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647 一直循壞,求幫助,新手一枚
2015-03-20
你的循環(huán)里面k沒有設(shè)置上界。。。所以才會一直循環(huán)。