![](/img/trans.png)
[英]Printing Single Item from ArrayList Created in Another Generic Class?
[英]Printing an ArrayList from another class
我在另一个类中为arrayList提供了打印功能。 每当我调用它时,它只会显示一个空的ArrayList。 我究竟做错了什么? 我几乎在模拟一个使用线程的电梯,只是将楼层添加到arrayList中,然后需要对其进行排序。 我只想打印数组以查看它是否顺序正确。
import java.util.Random;
import java.util.concurrent.Semaphore;
public class Threads {
public static int RandomFloor(){
Random random = new Random();
int floor = random.nextInt(6) + 2;
return floor;
}
public static void main(String[] args) throws Exception {
Semaphore sem = new Semaphore(0);
//Random number for floors
Elevator elevator1 = new Elevator();
//Creates the first set of threads and assigns the floor using random number generator defined at the top.
Thread myThread1 = new Thread(new Driver(1,RandomFloor()));
Thread myThread2 = new Thread(new Driver(2,RandomFloor()));
Thread myThread3 = new Thread(new Driver(3,RandomFloor()));
Thread myThread4 = new Thread(new Driver(4,RandomFloor()));
Thread myThread5 = new Thread(new Driver(5,RandomFloor()));
Thread myThread6 = new Thread(new Driver(6,RandomFloor()));
Thread myThread7 = new Thread(new Driver(7,RandomFloor()));
Thread elevator = new Thread(new Elevator());
//Start first set of threads
myThread1.start();
myThread1.join();
myThread2.start();
myThread3.start();
myThread4.start();
myThread5.start();
myThread6.start();
myThread7.start();
elevator1.printFloors();
sem.acquire();
}
}
包含arrayList和print函数的电梯类
import java.util.*;
public class Elevator implements Runnable
{
List<Integer> floors = new ArrayList<Integer>();
int floor;
//add floors into Arraylist
public void addFloors(int floor)
{
this.floor=floor;
floors.add(floor);
System.out.println("Added to floor array\n");
System.out.println(floors);
}
public void run()
{
}
public void sortFloors()
{
Collections.sort(floors);
}
public void printFloors()
{
//System.out.println(floors);
}
}
您可以创建一个具有随机楼层数的新电梯线程,如下所示:
Elevator elevator1 = new Elevator();
int numberOfFloors = RandomFloor();
for(int i = 1; i <= numberOfFloors; i++)
elevator1.addFloors(i);
这将从您的RandomFloor()方法生成一个随机数,并将那么多整数添加到Elevator对象中的floors数组中。
就像其他人指出的那样,您的代码有一些错误,例如甚至没有调用addFloors
方法,而printFloors
没有代码
如果要将电梯对象设置为从一个随机楼层开始,然后为其提供一些模拟客户呼叫的随机楼层编号,则可以像下面这样修改代码:
电梯等级:
public class Elevator implements Runnable
{
private List<Integer> floors = new ArrayList<Integer>();
private int startingFloor = 0;
//add floor into Arraylist
public void addFloor(int floor)
{
floors.add(floor);
System.out.println("Added to floor array\n");
System.out.println(floors);
}
public void setStartingFloor(int floor){
this.startingFloor = floor;
}
public void run()
{
}
public void sortFloors()
{
Collections.sort(floors);
}
public void printFloors()
{
System.out.println(floors);
}
}
主要方法:
Elevator elevator1 = new Elevator();
elevator1.setStartingFloor(RandomFloor());
int numberOfElevatorCalls = 50;
for(int i = 0; i < numberOfElevatorCalls, i++){
elevator1.addFloor(RandomFloor());
}
// sort
elevator1.sortFloors();
// print
elevator1.printFloors();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.