【问题标题】:What is the logical error in this loop?这个循环中的逻辑错误是什么?
【发布时间】:2023-03-26 10:01:01
【问题描述】:

对于这些指南:

编写一个循环,从标准输入读取正整数,并在读取非正整数时终止。循环结束后,它会在一行上打印出读取的所有偶数整数和读取的所有奇数整数的总和,并用空格分隔。声明任何需要的变量。

假设变量 stdin 的可用性,它引用与标准输入关联的 Scanner 对象。

我写了这段代码,但由于逻辑错误,硬件软件不会排除它。我似乎无法在这里找到逻辑错误。有人能指出它有什么问题吗?

    int sumP=0;
    int sumO=0;
    Scanner stdin = new Scanner (System.in);

    System.out.println("enter an odd or even number");

    while (stdin.nextInt() >= 0){
    if(stdin.nextInt()%2 == 0)
        sumP+= stdin.nextInt();
    else
        sumO += stdin.nextInt();
    }
    System.out.println(sumP + " " + sumO);

【问题讨论】:

    标签: java loops


    【解决方案1】:
    int number = 1;
    while (stdin.hasNextInt() && number > 0)
    {
                number = stdin.nextInt();
                if (number % 2 == 0 && number > 0)
                            System.out.print(number + " ");
    }
    

    这个和许多其他代码实验室练习的答案可以在Java Codelab Solutions找到

    【讨论】:

      【解决方案2】:

      这适用于 myprogramminglab - Java

      int sum=0;
      boolean areMore = true; 
      int negative;
      while (areMore)
      {
          int number = stdin.nextInt();
          if (number <= 0)
          areMore = false;
          else if (number %2 ==0 )
          sum = sum + number;    
      else 
           negative = sum + number;
       }    
      System.out.println(sum); 
      

      【讨论】:

        【解决方案3】:

        读取的值需要保存,否则在while循环和加法中会用到不同的值。

        int n;
        while((n = stdin.readInt()) >= 0) {
            // use the same value of n
        

        【讨论】:

        • 有时当您调用相同的方法时,您会得到相同的结果,但使用流您只会得到下一个值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多