1

10進数から2進数、8進数、16進数に変換するプログラムを作成しています。これまでのところ、これでは10進数から2進数の部分にのみ焦点を当てています。私の問題は、バイナリが上記の数値に変換するように要求すると、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をシンプルに変更します

    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()の呼び出しの後に空の呼び出しを行うことを意図している可能性があります(ちなみに、引数なしで呼び出すことができます)。そうでない場合、評価される各番号の各再帰ステップ中に空の行が出力されます。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 に答える