0

疑似コードからJavaプログラムを作成する必要があります。コードが少し書かれていますが、機能していません。疑似コードをたどろうとしただけなので、正しく実行したかどうかはわかりません。

  • 私を読む
  • i>0の間
  • 余りを印刷するi%2
  • iをi/2に設定します

    import java.util.Scanner;
    
    import java.util.Scanner;
    
    public class InputLoop
    {
        public static void main(String[] args)
        {
            int i = 0;
            Scanner scan = new Scanner(System.in);
            System.out.println("Enter an integer");
            while (!scan.hasNextInt()) // while non-integers are present
            {
                scan.next();
                System.out.println ("Bad input. Enter an integer.");
            }
            while (i>0) // while greater than 0
            {
                int input = scan.nextInt();
                System.out.println (i%2);
                i = (i/2);
            }
    
        }
    }
    
4

3 に答える 3

3

率直に言って、あなたはdidn't(ああ、以前はそれを見逃していました)、擬似コードに正確に従ったのです。疑似コードはread i、あなたが読んでいるのに対して、あなたに指示しますinput。それが一つの問題です。

while2番目の問題は、入力を使用して処理を行っているループの外側で入力を読み取る必要があることです。それはあなたが従わなかった2番目のことです。

現在、whileループは次のとおりです。-

    while (i>0) // while greater than 0
    {
        int input = scan.nextInt();
        System.out.println (i%2);
        i = (i/2);
    }

これは、不要な反復ごとにユーザーから読み取らinputれます。

したがって、コードを少し変更する必要があります。-

int i = scan.nextInt();  // Read input outside the while loop

while (i>0) // while greater than 0
{      
    System.out.println (i%2);
    i = i/2;   // You don't need a bracket here
}
于 2012-11-22T18:29:08.580 に答える
3

どうですか:

System.out.println(Integer.toBinaryString(i));
于 2012-11-22T18:27:21.947 に答える
0

擬似コードは最初に(ループの外側で)読み取りますが、コードでは2番目に読み取ります(ループの内側)

于 2012-11-22T18:27:33.457 に答える