【问题标题】:Coverting a decimal to binary using for loops?使用for循环将十进制转换为二进制?
【发布时间】:2015-03-19 10:16:17
【问题描述】:

我正在尝试编写一个将十进制转换为二进制和十进制转换为八进制的程序。 我可以从十进制转换为二进制,但从十进制转换为八进制就不行了。

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);
        }
    }
 }        
 }

【问题讨论】:

    标签: java loops data-conversion


    【解决方案1】:

    看起来两者都没有生成正确的值,只是用 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);
    

    【讨论】:

      【解决方案2】:

      按照我的学习方式,这有点复杂。您必须找到适合该数字的 8 的最大幂,查看它进入该数字的次数,然后使用下一个最小的 8 幂重复该过程。您可以随时打印每个数字。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-10
        • 1970-01-01
        • 2016-03-18
        • 2012-06-26
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 2014-02-10
        相关资源
        最近更新 更多