【问题标题】:Java While loop to generate sequence 1, 2, 0, 3, -1, 4Java While循环生成序列1、2、0、3、-1、4
【发布时间】:2013-11-11 00:22:04
【问题描述】:

我正在阅读一本 Java 初学者书籍,其中包含一些可供尝试的练习题。我目前正在学习 while 循环,有一个问题我一直在坚持,并且在过去的两天里一直存在。

它要求我使用单个 While 循环打印出序列 1、2、0、3、-1、4 中的前十个数字。

我已经计算出了序列如何进行的简单位(加 1、取 2、加 3、取 4、加 5、取 6、加 7 等)但是我不知道如何实现这一点。

public class WhileTester {

  public static void main(String[] args) {
    System.out.println("First 10 numbers in the sequence 1, 2, 0, 3, -1, 4, -2 ...");
    int i = 0;
    while (i <= 6) {
      int a = 1;
      int num = i;
      if (i % 2 == 0) {
        num = -i;
      } else {
        num = i;
      }
      a = a + num;
      System.out.print(a+ ", ");
      i++;

我知道这离我要去的地方很近,但我一直在寻找想法。

提前致谢。

【问题讨论】:

  • 好吧,你会如何在纸上做呢?这是一个健康的起点。
  • 是的,我也想说——用纸和笔来思考。一旦逻辑下降,编码就变得微不足道。但你知道如何编码,,,
  • 不应该是1、-1、2、-2、3等吗?
  • 您的描述以 1 开头并加 1,因此系列是 1,2...您的代码以 0 开头,不打印初始值,因此它的 1,-1...。
  • 没有序列是 1,2,0,3,-1,4,-2,5,-3,6。所以 1 (+1), 1 (-2), 0 (+3),3(-4), -1(+5), 4(-6),-2(+7),5(-8) ,-3(+9),6。感谢他们帮助我更好地理解问题。

标签: java while-loop


【解决方案1】:

我认为您的顺序有误,请查看数字: 它从 1 开始,然后是 +1、-2 +3 -4 +5 ...

也许这有助于您的实施。

【讨论】:

  • 没有序列是 1,2,0,3,-1,4,-2,5,-3,6。所以 1 (+1), 1 (-2), 0 (+3),3(-4), -1(+5), 4(-6),-2(+7),5(-8) ,-3(+9),6。感谢他们帮助我更好地理解问题。
【解决方案2】:

您在每次迭代的循环内将 a 返回 1。 a 不应该在循环外初始化吗?

【讨论】:

    【解决方案3】:

    令我震惊的是,您比您自己认为的更接近解决方案。

    如果您将num 移到循环之外......

    然后,每次循环时将 1 添加到 num

    在“偶数”循环中添加num,在奇数循环中减去num。现在,您需要循环 10 次(直到值为 6....,这是一个“巧合”....):

    您的关键代码变为:

    int num= 0;
    int a = 1;
    for (int i = 0; i < 10; i++) {
        System.out.println(a);
        num++;
        if (i % 2 == 0) {
            a += num;
        } else {
            a -= num;
        }
    }
    

    【讨论】:

    • 感谢您的帮助!我很感激。帮了大忙
    【解决方案4】:

    公共类测试器{

    public static void main(String[] args) {
        System.out.println("First 10 numbers in the sequence 1, 2, 0, 3, -1, 4, -2 ...");
        int num = 0;
        int a = 1;
        int value = 0;
        while (value <= 10) {
            if (value % 2 == 0) {
                num = -value;
            } else {
                num = value;
            }
            a = a + num;
            System.out.print(a + ", ");
            value++;
        }
    }
    

    }

    【讨论】:

    • 欢迎来到 SO。为防止 正确 答案被否决,您需要为您的决定提供指导。代码块永远不应该是一个足够的答案(除非您的指导已在代码中注释)。请编辑并解释代码。如果已经有一个可行的答案,您应该解释为什么您的答案更好或替代解决方案。
    【解决方案5】:

    无法为程序编译类:-

    public class WhileTester {
    
      public static void main(String[] args) {
        System.out.println("First 10 numbers in the sequence 1, 2, 0, 3, -1, 4, -2 ...");
        int i = 0;
        while (i <= 6) {
          int a = 1;
          int num = i;
          if (i % 2 == 0) {
            num = -i;
          } else {
            num = i;
          }
          a = a + num;
          System.out.print(a+ ", ");
          i++;
    

    这是一个错误的信息

    【讨论】:

    • 提问者的代码显然不是一个完整的类;他只是把所有的东西都写到这里他卡住了。我想他知道它不会编译。即使他没有,这是对他的问题的评论,而不是对他的问题的回答,并且将整个内容复制到您的答案中不会添加任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2021-11-15
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多