如何在Java中输出序列'1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 ...'?

时间:2009-01-28 23:46:39

标签: java for-loop sequence

我目前正在开始用Java编程。我试图将标题中的序列编码为Java中的输出,但我被卡住了!我正在试验for功能,欢迎任何帮助;)

7 个答案:

答案 0 :(得分:23)

System.out.println("1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0");

但严肃地说,伙计们,这是一个未经测试的第一次通过:

for(int i=1; i<100; i++){
    System.out.print("1 ");
    for(int j=0; j<i; j++){
        System.out.print("0 ");
    }
}

如果您正在寻找有关如何入门的基本信息,Google就是您的朋友。例如,尝试谷歌搜索“for loop java”,你会得到很多很好的例子。此外,要学习任何语言的基本内容,Google搜索“&lt; language&gt; hello world”非常可靠。

答案 1 :(得分:20)

为什么要两个循环?

(从C#转换,原谅任何语法错误)

String s = "1 ";
for (int i = 0; i < 5; ++i)
{
  s = s + "0 ";
  System.out.print(s);
}

自批评:

  • 两个for循环(如Michael Haren的解决方案)将否定字符串复制
  • StringBuffer / StringBuilder会否定字符串复制

答案 2 :(得分:4)

您可以将数字10存储在变量中,然后在循环中打印数字,将其乘以10(将十进制表示附加零),然后重复。

答案 3 :(得分:3)

for (int i = 2; i < 64; i <<= 1)
    //System.out.print(Integer.toString(i, 2));
    System.out.print(Integer.toString(i, 2).replaceAll("[01]", "$0 "));

答案 4 :(得分:0)

或者你的老师问你了吗? 两个嵌套的for循环可以解决问题。

或者用另一种语言(Ruby)的另一种方式:

4.times {|n| print 10**(n+1)}

答案 5 :(得分:0)

这不是真正的问题,而是非常基本的算法思维。 你有一个由一个“1”组成的序列,然后是一个随时间增长的其他东西“,另一个”1“,另一个东西,等等。你可以把这些视为交错的两个不同的系列。

因此,整体结构将类似于:

while(... infinity?)
{
   System.out.print("1");
   doSomething(); 
}

现在这个东西显然与外部循环的迭代次数(“阶段”)或1的计数相关,所以你需要这样的东西:

int stage=0;
while(...infinity?)
{
   ++stage;
   System.out.print("1");
   for(int i=0; i<stage; ++i) System.out.print("0");
}

如果您知道需要经历多少个周期,请使用for循环而不是一段时间,并通过它增加阶段。

答案 6 :(得分:-1)

for (int i = 1; i < 100000;)
{
    i = i * 10;
    System.out.print(i);              
}

int i = 1;

while (i < 100000)
{
    i = i * 10;
    System.out.print(i);
}