所以这里。我有两个课程......
引用具有任务实例变量的任务类
TaskId是一个静态int,它将引用map键并设置为1
我想添加一个方法addTask,它接受3个参数,并通过发生的事情类添加一个任务。每次添加一个任务时,任务ID都应该增加1.这是我到目前为止所拥有的......
public void addTask(String aName, String aDate, String aTime)
{
Map<Integer, Task> tasks = new HashMap<>();
Task newtask = Task (aName,aDate, aTime);
tasks.put(TaskId,newtask);
TaskId = TaskId +1;
}
但是,当我创建Whats发生的实例(称为whatshappening)并尝试通过该方法添加任务时,例如 whatshappening.addTask(“将猫带到兽医”,“010117”,“1400 “);
始终无法将任务添加到地图中!
非常感谢任何帮助!
答案 0 :(得分:0)
tasks
是仅在方法调用期间存在的变量。可能您需要将新的task
放在全局或外部地图中。
答案 1 :(得分:0)
您只是创建一个Task (aName, aDate, aTime)
的对象,在此方法结束后将不会保留该对象。
请尝试以下方法:
Task newTask = Task (aName, aDate, aTime)
您必须使用动态分配才能“允许”您的任务超出您的方法范围。
答案 2 :(得分:0)
如果这是您的整个代码,那么原因很明显:
在堆栈上分配Map<Integer,Task> task = new HashMap<>();
。对于我能想到的大多数语言的内存分配规则,可以追溯到50年前,在退出函数时,地图会被释放,就像它的所有内容一样。
尝试:
public class Thing {
private static Integer TaskId = 0;
public static void main(String .. args) {
Map<Ineger,Task> tasks = addTask("myName", LocalDate.now()+"", LocalTime.now()+"")
System.out.println(tasks);
}
private static Map<Integer,Task> addTask(String name, String date, String time) {
Map<Integer, Task> tasks = new HashMap<>();
Task newtask = Task (aName,aDate, aTime);
tasks.put(TaskId,newtask);
TaskId = TaskId +1;
return tasks; // crucial
}
}
这对你有用。
一些好的编程建议:
this.id = TaskId++