0

需要从伪代码编写一个 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);
            }
    
        }
    }
    
4

3 回答 3

3

怎么样:

System.out.println(Integer.toBinaryString(i));
于 2012-11-22T18:27:21.947 回答
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
}
于 2012-11-22T18:29:08.580 回答
0

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

于 2012-11-22T18:27:33.457 回答