【问题标题】:Count negative numbers using array and while loop使用数组和while循环计算负数
【发布时间】:2016-09-17 04:12:47
【问题描述】:

有一个任务并且是新手。任务是计算给定数组中的负数,并打印出它们被计数的数量。而且我必须使用一个while循环。我遇到了很多错误。

class NegativeNumber {
    public static void main(String[] args) {

        int[] wholeNumber = {1, 4, 5, -2, -4, 6, 10, 3, -2};
        int counter = 0;
        int negativeCounter = 0;
        int sum;

        while(counter < wholeNumber.length) {
           sum = sum + wholeNumber;
           if(wholeNumber < 0)
           {
             negativeCounter++;
           }
          }
          System.out.println("The amount of negative numbers are "+negativeCounter);
   }
}

【问题讨论】:

  • “很多错误”...请告诉我们这些错误是什么。

标签: java arrays while-loop counter


【解决方案1】:

改变

if(wholeNumber < 0)

if(wholeNumber[counter] < 0)

sum = sum + wholeNumber;

sum = sum + wholeNumber[counter];

较短的

sum += wholeNumber[counter];

别忘了在循环体的末尾增加counter

counter++;

或者,在 Java 8+ 中

你可以使用IntStream

int[] wholeNumber = { 1, 4, 5, -2, -4, 6, 10, 3, -2 };
int sum = IntStream.of(wholeNumber).sum();
long negativeCount = IntStream.of(wholeNumber).filter(x -> x < 0).count();
System.out.printf("%s Sum=%d, Count=%d%n", 
        Arrays.toString(wholeNumber), sum, negativeCount);

【讨论】:

    【解决方案2】:

    你必须使用 wholeCounter[counter] 并在最后增加 counter

    【讨论】:

      【解决方案3】:
      1. Sum 是一个 int 值;
      2. WholeNumber 是一个数组;
      3. “+”操作符不支持int和array之间的加法。您需要使用数组的索引来获取 int 值。

      【讨论】:

        【解决方案4】:
         while(counter < wholeNumber.length) {
               if(wholeNumber[counter] < 0)
               {
                 sum += wholeNumber[counter];
                 negativeCounter++;
               }
              counter++
              }
        

        【讨论】:

        • 提示:你的答案被接受了,你很幸运;因为周围有几个更好的答案。你连解释都没有!
        【解决方案5】:

        一些提示:

        public class NegativeNumber {
        

        当您想稍后运行它的 ma​​in 方法时,您的类必须是 public

        可以使用 for each 样式的 for 循环来简化循环:

            for (int number : wholeNumber } {
               sum = sum + number;
               if(number < 0)  {
                 negativeCounter++;
               }
            }
        

        提示:wholeNumber 是一个具有误导性的数组名称。为什么不叫它 wholeNumbers 呢?!为了表达这个变量是关于复数的事实!

        【讨论】:

          【解决方案6】:

          你可以使用 for 循环轻松做到这一点

          public class NegativeNum {
          
              public static void main(String[] args) {
                  // TODO Auto-generated method stub
                  int[] wholeNumber = {1, 4, 5, -2, -4, 6, 10, 3, -2};
          
                  int negativeCounter = 0;
                  int sum=0;
          
                  for(int i =0; i<wholeNumber.length; i++)
                  {
                      if(wholeNumber[i]< 0)
                      {
                          sum =sum+ wholeNumber[i];
                          negativeCounter++;
                      }
          
                  }
                  System.out.println(sum + " " + negativeCounter);
              }
          
          }
          

          【讨论】:

            猜你喜欢
            • 2021-01-19
            • 2011-09-29
            • 2021-12-19
            • 2017-07-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多