打印数字的二进制数字

时间:2012-11-22 18:24:44

标签: java loops

需要从伪代码编写一个java程序,我已经编写了一些代码,它没有工作,我不确定我是否正确完成它,因为我只是试图遵循伪代码 -

  • 阅读我
  • 虽然我> 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);
            }
    
        }
    }
    

3 个答案:

答案 0 :(得分:3)

怎么样:

System.out.println(Integer.toBinaryString(i));

答案 1 :(得分:3)

坦率地说,你didn't(早先想念它)完全遵循伪代码。伪代码会告诉您read i,而您正在阅读input。这是一个问题。

第二个问题是,您应该读取while循环外的输入,您正在使用输入进行处理。这是你没有遵循的第二件事。

目前你的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
}

答案 2 :(得分:0)

伪代码首先读取(在循环外部),但在您的代码中读取第二个(在循环内)