编写 Main 方法来调用对象?



我们正在用BlueJ学习Java,我发现BlueJ非常不清楚和混乱。我们得到了一个赋值,第一步是"创建一个 main 方法来调用Train对象"。我敢肯定他的意思是"调用火车方法"。

无论如何,我正在尝试让 main 方法在下面的代码中调用 Train 方法,这样当你在 BlueJ 中传递字符串参数时,它会在 main 中执行代码。就是这样。Train 方法传入一个字符串和两个 int 值:

public static void main(String[] args)
{
Train train = new Train();
train.Train();
}

尝试执行此操作时,我不断收到错误,但不确定为什么。

这是训练类的代码:

public class Train
{
//Fields
/* Destination of the Train */
private String destination = new String();
/* Train number - identifies the Train */
private int TrainNumber;
/* Capacity of the Train - how many customers can be in it */
private int capacity;
/* Number of customers currently in the Train */
private int numberInTrain;
/* Ticket price - how much a ticket costs. */
private int ticketPrice;
public static void main(String[] args)
{
Train train = new Train();
train.Train();
}
/** Constructor for Train
* @param dest the destination of the Train
* @param num the number of the Train
* @param cap the capacity of the Train
*/
public void Train(String dest, int num, int cap)
{
destination = dest;
capacity = cap;
TrainNumber = num;
numberInTrain = 0;
ticketPrice = 50;
}
//mutators
/* Records customer taking Train */
public void enterTrain ()
{
numberInTrain = numberInTrain + 1;
}
/* Records customer leaving Train */
public void leaveTrain ()
{
numberInTrain = numberInTrain - 1;
}
}

但是,这给了我一个错误,我无法从 main 运行该程序。任何正确方向的提示将不胜感激。

错误是:

错误:(30, 14( java: 方法 Train in class TrainAssignment.Train 不能应用于给定类型;
必需:java.lang.String,int,int
找到:无参数 原因:实际参数列表和正式参数
列表的长度不同

编辑 我试过了

public static void main(String[] args)
{
Train train = new Train();
train.Train(dest, num, cap);
}

这也给出了找不到变量的错误。这些值需要来自用户输入。创建对象时,我们输入目的地、人数和每个对象的容量。

你的教授说得对。你想要调用 Train 对象。当您调用Train train = new Train();那是实例化 Train 对象时,将调用该类的构造函数。

从本质上讲,这就是您在这里尝试做的事情:

public void Train(String dest, int num, int cap)

但是,这里不算作构造函数。构造函数没有返回类型,因此它甚至不能为 null。所以它会是这样的:

public Train(String dest, int num, int cap)

通过这样做,您可以删除train.Train();并仅拥有Train train = new Train();.但关于这一点还有一个问题。当你调用 Train 对象时,构造函数将需要 3 个参数,你的字符串和两个 Int。因此,当您调用该对象时,必须使用所需的参数填充它,例如Train train = new Train("Canada",2,3);

编辑:

我看到您现在需要参数来自用户输入。我建议查找 Scanner 类以了解如何获取用户输入。

最新更新