ArrayList 和传递值

ArrayList and Passing values

我是编程新手,我们今天刚在 class 中学习了 ArrayLists,我有一个简单的问题想问你们,我只是在注释中找不到关于设置什么的传递值等于。这个练习程序的要点是接收一个数字对象(class 已经创建)并且 ArrayList 中的那些数字应该被计算为奇数、偶数和完全数。这是程序的前几行,这是您所需要的。

import java.util.ArrayList;
import static java.lang.System.*;
public class NumberAnalyzer {

    private ArrayList<Number> list;

    public NumberAnalyzer() {
        list = new ArrayList<Number>();
    }

    public NumberAnalyzer(String numbers) {

    }

    public void setList(String numbers) {

    }

我应该在 NumberAnalyzer() 和 setList() 中将(字符串数字)设置为什么?提前感谢您回答菜鸟问题!

    NumberAnalyzer test = new NumberAnalyzer("5 12 9 6 1 4 8 6");
    out.println(test);
    out.println("odd count = "+test.countOdds());
    out.println("even count = "+test.countEvens());
    out.println("perfect count = "+test.countPerfects()+"\n\n\n");

这是将 运行 该程序的 Lab16b Class。 ^^

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

这是号码class。 ^^

根据您提供的信息,我觉得 NumberAnalyzer 应该是这样的。 setList 函数目前用于获取 String 并将其中的数字添加到新列表中。

public class NumberAnalyzer {

    private List<Number> list;

    public NumberAnalyzer() {
        this.list = new ArrayList<Number>();
    }

    public NumberAnalyzer(String numbers) {
        setList(numbers);
    }

    public void setList(String numbers) {
        String[] nums = numbers.split(" ");
        this.list = new ArrayList<Number>();
        for(String num: nums) 
            list.add(new Number(Integer.parseInt(num)));
    }

}

分析以了解一些东西。

public static void main(String[] args) {

    String temp = "5 12 9 6 1 4 8 6";
    NumberAnalyzer analyzer = new NumberAnalyzer(temp);

    //foreach without lambda expressions
    System.out.println("without Lambda");
    for (NeverNumber i : analyzer.getList()) {
        i.print();
    }
    //with the use of lambda expressions, which was introduced in Java 8
    System.out.println("\nwith Lambda");
    analyzer.getList().stream().forEach((noNumber) -> noNumber.print());

    NeverNumber number = new NeverNumber(31);
    number.print();
    number.setNumber(1234);
    number.print();

}

public class NumberAnalyzer {

    private List<NeverNumber> list; //List is interface for ArrayList

    public NumberAnalyzer(String numbers) {
        String[] numb=numbers.split(" ");
        this.list=new ArrayList<>();
        for (String i : numb) {
            list.add(new NeverNumber(Integer.parseInt(i)));
        }
    }

    public void setList(List<NeverNumber> numbers) {
        List<NeverNumber> copy=new ArrayList<>();
        numbers.stream().forEach((i) -> {
            copy.add(i.copy());
        });
        this.list=copy;
    }

    public List<NeverNumber> getList() {
        List<NeverNumber> copy=new ArrayList<>();
        this.list.stream().forEach((i) -> {
            copy.add(i.copy());
        });
        return copy;
    }

    public NeverNumber getNumber(int index) {
        return list.get(index).copy();
    }

}

public class NeverNumber { //We do not use the names used in the standard library.
    //In the library there is a class Number.

    private int number; // If you can use simple types int instead of Integer.

    public NeverNumber() {
        number = 0;
    }

    public NeverNumber(int num) {
        number = num;
    }

    private NeverNumber(NeverNumber nn) {
        this.number=nn.number;
    }

    public void setNumber(int num) {
        number = num;
    }

    public int getNumber() {
        return this.number;
    }

    public boolean isOdd() {
        return number % 2 != 0;
    }

    public boolean isPerfect() {
        long end = Math.round(Math.sqrt(number)); //Method Math.sqrt(Number) returns a double, a method Math.round(double) returns long.
        for (int i = 2; i < end + 1; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }

    public NeverNumber copy(){
        return new NeverNumber(this);
    }

    public void print() {
        System.out.println("for: " + this.toString() + " isPer: " + this.isPerfect() + " isOdd: " + this.isOdd() + "\n");
    }

    @Override //Every class in Java inherits from the Object class in which it is toString(), 
    //so we have to override our implementation.
    public String toString() {
        return this.number + "";  //The object of any class + "" creates a new object of the String class, 
        //that is for complex types, calls the toString () method implemented in this class, 
        //override the toString () from the Object class. If the runs, we miss class toString() 
        //calls from the Object class.
    }

}