首页 > 解决方案 > 计算数组java的偶数,奇数和完美数?

问题描述

问题:编写一个 Number 类,可用于确定一个数是奇数、偶数还是完美数。然后,使用这个 Number 类来确定列表中有多少个数字是奇数、偶数和完美数。

号码类

public class Number
{
  private Integer number;
  public Number(int n)
  {
    number=n;
  }
  public boolean isEven() 
  {
    if(number % 2 == 0)
      return true;
    else 
      return false; 
  }
  public boolean isOdd()
  {
    if(number % 2 != 0)
      return true;
    else 
      return false;  
  }
  public boolean isPerfect()
  {
    int count = 0;
    for(int i = 1; i<number; i++)
    {
       if(number % i == 0)
          count += i;
    }
    if(number == count)
    {
       return true;
    }
    else
       return false;
  }
  public String toString()
  {
    return "" +number;
  }
}

我的数字课程运行良好,我的数字课程没有问题。但是在我的数字分析器类中,我找到了奇数、偶数和完美数。

数字分析器类:

public class NumberAnalyzer
{
  private ArrayList<Number> list;
  public NumberAnalyzer(int l)
  {
    list=l;
  }
  public int countOdds()
  {
    int odd = 0;
    for(int i=0; i<list.size(); i++)
    {
      if(list.isOdd() == true)
        return odd++;
    }    
  }
  public int countEvens()
  {
    int even = 0;
    for(int x = 0; x<list.size(); x++)
    {
      if(list.isEven() == true)
        return even++;
    }
  } 
  public int countPerfects()
  {
    int perfect = 0;
    for(int z = 0; z<list.size(); z++)
    {
       if(list.isPerfect() == true)
         return perfect++;
    }
  }

  public String toString()
  {
     return "" + list;
  }

}

请对此课程进行更正,以便我的程序完美运行。我不明白这个问题,请对此进行更改,以便程序完美运行。 节目主持人:

import static java.lang.System.*;

public class Runner
{
    public static void main( String args[] )
    {
        int[] r = {5, 12, 9, 6, 1, 4, 8, 6 };
        NumberAnalyzer test = new NumberAnalyzer(r);
        out.println(test);
        out.println("odd count = "+test.countOdds());
        out.println("even count = "+test.countEvens());
        out.println("perfect count = "+test.countPerfects()+"\n\n\n");


    }
}

此 Runner 的正确答案:

[5, 12, 9, 6, 1, 4, 8, 6]
odd count = 3
even count = 5
perfect count = 2

谢谢

标签: javaarraysarraylist

解决方案


如果它甚至没有编译但没关系,我不明白它是如何工作的。您需要更改 2 个类:NumberAnalyzer 和 Runner。请看一看:

public class Runner {
    public static void main(String args[]) {
        Number[] r = {new Number(5), new Number(12), new Number(9), new Number(6),
                new Number(1), new Number(4), new Number(8), new Number(6)};
        NumberAnalyzer test = new NumberAnalyzer(r);
        out.println(test);
        out.println("odd count = " + test.countOdds());
        out.println("even count = " + test.countEvens());
        out.println("perfect count = " + test.countPerfects() + "\n\n\n");


    }
}

import java.util.Arrays;
import java.util.List;

public class NumberAnalyzer {
    private List<Number> list;

    public NumberAnalyzer(Number[] l) {
        list = Arrays.asList(l);
    }

    public int countOdds() {
        int odd = 0;
        for (Number value : list) {
            if (value.isOdd() == true) {
                odd++;
            }
        }
        return odd;
    }

    public int countEvens() {
        int even = 0;
        for (Number value : list) {
            if (value.isEven() == true) {
                even++;
            }
        }
        return even;
    }

    public int countPerfects() {
        int perfect = 0;
        for (Number value : list) {
            if (value.isPerfect() == true) {
                perfect++;
            }
        }
        return perfect;
    }

    public String toString() {
        return "" + list;
    }

}

在这种情况下,它会返回正确的输出。


推荐阅读