2017-06-02 61 views
-5

我想在java中制作组合计算器,但我很初学。我有一个班,它的名字是排列。我宣布了一个数组列表,但我无法上传内容。在程序运行之后,数组列表将为空。为什么?如何工作我的java程序? (ArrayList)

package combinatorics; 
import java.util.*; 

public class Permutation { 

    private int num; 
    protected ArrayList<Integer> szamok = new ArrayList<Integer>(); 

    public Permutation(int number) { 
     this.num = number; 
    } 

    protected void makeArrayList() { 
     for (int i = 1; i < this.num+1; i++) { 
      this.szamok.add(i); 
     } 
    } 
} 

这是我的主要方法:

public static void main(String[] args) { 
     Permutation perm = new Permutation(5); 
     perm.getNumbers(); 
    } 
+2

您永远不会调用'makeArrayList()',并且由于它是私有的,所以类外部没有人可以调用它。更糟糕的是,构造函数也是私有的。 – Compass

+0

构造函数不是私有的。 :D我意外改变了。但是如果构造函数不是私有的,那么数组列表也将是空的。 – Kovoliver

+0

@Kovoliver你错过了一点 - “makeArrayList()”是私有的事实也是一个问题。它永远不会被调用,所以当然你的ArrayList总是空的。公开构造函数并不会帮助你解决这个问题。另外,请编辑您的问题以显示您实际使用此课程的位置,因为这对于回答此问题非常重要。 – EJoshuaS

回答

0

没有被添加到ArrayList的原因是因为该功能makeArrayList永远不会被调用。另一个错误的地方是你的构造函数也是私有的,这是不必要的,并且意味着你不能创建该类的实例。您可以在构造函数中调用makeArrayList,或者在Permutation类之外单独添加项目。

您也可以通过做项目添加到您的ArrayList:

Permutation p = new Permutation(num); 
p.szamok.add(num); 

然后

System.out.println(p.szamok.toString(); 

将返回

[num]

+0

'szamok'受到保护。 – EJoshuaS

+1

问题在于?排列可能在同一个包中,这意味着它可以在Main类中进行访问。 – Splinxyy

1

好了,这个工程:

package combinatorics; 
import java.util.*; 

public class Permutation { 

    private final int num; 
    protected ArrayList<Integer> szamok = new ArrayList<Integer>(); 
    private int egyszam; 

    public Permutation(int number) { 
     this.num = number; 
    } 

    protected void makeArrayList() { 
     for (int i = 1; i < this.num+1; i++) { 
      this.szamok.add(i); 
     } 
    } 

    public void getNumbers() { 
     for (int i = 0; i < szamok.size(); i++) { 
      System.out.println(szamok.get(i)); 
     } 
    } 

} 

采用这种方法主要:

public static void main(String[] args) { 
     Permutation perm = new Permutation(10); 
     perm.makeArrayList(); 
     perm.getNumbers(); 
     launch(args); 
    } 

谢谢你的ansewrs我sptupid问题。 :)我真的是一个初学者,很抱歉!