Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用另一个类的输入_Java_Arrays - Fatal编程技术网

Java 使用另一个类的输入

Java 使用另一个类的输入,java,arrays,Java,Arrays,现在我有三节课。火车、货车和乘客。在火车班 public class Train { private int seatNum = 30 + (int) (Math.random() * ((40 - 30) + 1)); //Random number of seats private int wagonNum = 5 + (int) (Math.random() * ((10 - 5) + 1));//Random number of wagons

现在我有三节课。火车、货车和乘客。在火车班

   public class Train
    {
        private int seatNum = 30 + (int) (Math.random() * ((40 - 30) + 1)); //Random number of seats
        private int wagonNum = 5 + (int) (Math.random() * ((10 - 5) + 1));//Random number of wagons
        
        public Train()
        {
            PassWagon[] wagons = new PassWagon[wagonNum];//here I created an array with random wagon numbers.

            for (int i = 0; i < wagonNum; i++)
            {
                wagons[i] = new PassWagon(seatNum); // I added PassWagon objects to that array. I need to access "seatnum" in the PassWagon class.
            
            }
        }
    
    }
公车
{
私人int seatNum=30+(int)(Math.random()*((40-30)+1));//座位的随机数
私有int wagonNum=5+(int)(Math.random()*((10-5)+1));//货车的随机数
公共列车()
{
PassWagon[]wagons=new PassWagon[wagonNum];//在这里,我创建了一个带有随机马车号的数组。
for(int i=0;i

公共级旅行车
{
私人货车餐厅;
Passenger[]rowA=new Passenger[wagonseats];//我创建了2个“Passenger”数组。问题是,wagonseats变量没有任何内容。来自其他类的“seatNum”变量在构造函数中启动。
乘客[]rowB=新乘客[货车座位];
公共旅行车(内部座位)
{
这个.wagonseats=座位;
对于(int i=0;i
我想获取“seatNum”变量,并使用它来创建rowA和rowB数组。我尝试了两种方法:

  • 我在PassWagon类中生成了随机数,但这次每个wagon对象将有不同数量的座位。我希望所有的wagon都有相同数量的座位

  • 我在构造函数内创建了rowA和rowB数组,这次我无法在构造函数外访问rowA和rowB数组

    有人有什么想法吗


您应该在构造函数外部创建
rowA
rowB
变量作为字段,但是一旦您有了参数
seat
(实际上是从另一个类判断的座位数),就应该在构造函数内部初始化它们

公共级旅行车{
私人货车餐厅;
乘客[]rowA;//只需创建,不需要初始化
乘客[]rowB;
公共旅行车(内部座位){
这个.wagonseats=座位;
rowA=新乘客[货车座位];
rowB=新乘客[货车座位];
for(int i=0;i
您的问题是,当您在构造函数之前初始化它们时,
wagonseats
刚刚创建,因此它包含
0
。因此您正在创建一个成员为零的数组。创建后您无法更改它,因此您应该仅在拥有正确的数字时创建它

顺便说一下,如果有两行,我想
wagonseats
实际上应该是
seat/2
,不是吗?或者至少,数组的大小和循环的限制应该是
seat/2

public class PassWagon
{
private int wagonseats ;

Passenger[] rowA = new Passenger[wagonseats]; //I created 2 "Passenger" arrays. Problem is, wagonseats variable has nothing. "seatNum" variable from other class gets initiated at Constructor. 
Passenger[] rowB = new Passenger[wagonseats];
    public PassWagon(int seat)
    {
        this.wagonseats = seat;
    
        for (int i = 0; i < seats; i++)
        {
            rowA[i] = new Passenger(); //I get an out of bounds error here because this array has nothing in it. 
            rowB[i] = new Passenger();
        }   
    }
public class PassWagon {
    private int wagonseats ;

    Passenger[] rowA; // Just create, don't initialize yet
    Passenger[] rowB;

    public PassWagon(int seat) {
        this.wagonseats = seat;
        rowA = new Passenger[wagonseats];
        rowB = new Passenger[wagonseats];

        for (int i = 0; i < wagonseats; i++) {
            rowA[i] = new Passenger();
            rowB[i] = new Passenger();
        }   
    }
}