使用for循环将十进制转换为二进制?

时间:2015-01-21 01:12:04

标签: java loops data-conversion

我正在尝试编写一个程序,将十进制转换为二进制,十进制转换为八进制。 我可以从十进制转换为二进制,但从十进制到八进制它只是不起作用。

import java.util.*;
public class RadixConversion 
{
public static void main(String[] args) 
{
Scanner scan = new Scanner(System.in);    
System.out.println("Enter a number: ");
int number = scan.nextInt();
System.out.println("Convert to base: ");
String letter = scan.next();

if (letter.equals("b")||letter.equals("B"))
    {
        int remainder = 0;
        for (int i = 1; number > 0; i++) 
        {
        number /= 2;
        remainder = number % 2;
        System.out.print(remainder);
        }
    }


    else if (letter.equals ("o") || letter.equals ("O"))
    {
        int remainder = 0;
        for (int i = 1; number >0 ; i++) 
        {
        number /= 8;
        remainder = number % 8;
        System.out.print(remainder);
        }
    }
 }        
 }

2 个答案:

答案 0 :(得分:0)

我学习它的方式有点复杂。您必须找到适合该数字的8的最大功率,查看它进入该数字的次数,并以下一个最低功率8重复该过程。您可以随时打印每个数字。

答案 1 :(得分:0)

没有人看起来正在生成正确的值,0和1的情况就不那么明显了。您正在丢弃第一个数字并以相反的顺序打印数字(首先打印一个数字)

    int remainder = 0;
    String result = "";
    for (int i = 1; number >0 ; i++) 
    {
      remainder = number % 8;
      result = remainder + result;  // remainder first puts the digits in the right order
      number /= 8;
    }
    System.out.print(result);