1

我正在制作一个从十进制转换为二进制、八进制和十六进制的程序。到目前为止,我只关注十进制到二进制部分。我的问题是,当我要求二进制文件将其转换为所述数字时,它们会垂直打印它们而不是像 010 那样水平打印。如果 y 输入大于 1024,我的 while 语句也不会停止执行,这是我想要的最高值能够被接受。

import java.util.Scanner;

public class DNS
{
    public static void main(String[] args)
    {
        int y;
        Scanner input = new Scanner( System.in);
    do
    {   
        System.out.println("java DisplayNumberSystems");
        System.out.println("Enter a decimal value to display to: ");
        y = input.nextInt();

        for(int x=0; x <=y; x++)
        {
            convertToBinary(x);
        }
    }
    while(y <=1024);    

    }

    public static void convertToBinary(int x)
    {
        if(x >0)
        {
            convertToBinary(x/2);
            System.out.print(x%2 + " ");

        }
        System.out.println("");
    }

}
4

2 回答 2

0

System.out.println("");从 您那里删除 public static void convertToBinary(int x) 将能够水平打印

并像这样将您的do-while更改为simple while

    int y;
    Scanner input = new Scanner( System.in);
    System.out.println("java DisplayNumberSystems");
    System.out.println("Enter a decimal value to display to: ");
    y = input.nextInt();

    while(y <=1024)
{   

    for(int x=0; x <=y; x++)
    {
        convertToBinary(x);
    }
}

您在调用 convertToBinary() 方法后检查是否 y<=1024。您在调用 convertToBinary() 方法之前检查是否 y<=1024。

于 2012-09-25T20:54:16.757 回答
0

您可能打算在主循环System.out.println()中调用 to 之后进行空调用(顺便说一下,您可以不带参数调用它)- 否则在每个被评估数字的每个递归步骤中都会打印空行。convertToBinary(x)for

for (int x = 0; x <= y; x++) {
    convertToBinary(x);
    System.out.println();
}

关于如果输入大于 1024 就停止的其他问题 - 这是因为调用convertToBinary(x)是在检查while语句之前发生的。您将需要明确break退出循环以停止此操作。就个人而言,我只会使用while带有显式检查的无限循环:

while (true) {
    System.out.println("java DisplayNumberSystems");
    System.out.println("Enter a decimal value to display to: ");
    y = input.nextInt();

    if (y < 0) {
        System.out.println("That number is not positive!");
        break;
    }

    if (y > 1024) {
        System.out.println("That number is too big!");
        break;
    }

    for (int x = 0; x <= y; x++) {
        convertToBinary(x);
        System.out.println();
    }
}
于 2012-09-25T21:03:46.227 回答