将你的代码该为:
- public class Demo1 {
- public static String toBinary(String str){
- StringBuffer sb=new StringBuffer();
- int i=Integer.parseInt(str);
- while(i!=0){
- int a=i%2;
- int b=i/2;
- i=b;
- sb.append(a);
- }
- return sb.reverse().toString();
- }
- public static void main(String[] args){
- System.out.println(toBinary("7"));
- }
- }
复制代码
运行结果:
111
你的问题在于:
- while(a>0){
- //把取到的余数添加进StringBuffer中
- sb.append(a);
- }
复制代码
代码。
如果传入的数据是5,那么第一次循环a=1,则这个while语句不会停止,会死循环。
如果传入的数据时4,那么第一次循环a=0,则这个while不会循环,0就不会存入sb中,第二次循环依旧a=0,0又存入不到sb中,第三次循环,a=1,这while不会停止,死循环,会一直往sb中存入1,报OutOfMemoryError错误 |