我正在尝试为作业制作电影数据库。卡住,添加删除功能。由于我的MoiveCount变量,我在尝试重新添加另一部电影时被卡住了。如果我删除了Movie3如果有4部电影,则MovieCount == 3,当我尝试添加另一部电影时,它需要添加Movie4时,我需要添加Movie3。
import java.util.*;
public class Interface {
private void run()
{
Scanner console = new Scanner(System.in);
Movie m1;
Movie m2;
Movie m3;
Movie m4;
String name, director;
int size, duration, option;
int moviecount = 0;
m1 = new Movie();
m2 = new Movie();
m3 = new Movie();
m4 = new Movie();
do {
System.out.println("Import new movie:(0), Delete movie from Database (2), View Movies: (3), Exit (9): ");
option = console.nextInt();
switch(option)
{
case 0:
if(moviecount == 0)
{
System.out.print("First Movie: ");
name = console.next();
m1.setName (name);
System.out.print("Director: ");
director = console.next();
m1.setDirector (director);
System.out.print("Size in MB: ");
size = console.nextInt();
m1.setSize(size);
System.out.print("Duration in minutes: ");
duration = console.nextInt();
m1.setDuration(duration);
moviecount++;
break;
}
else if(moviecount == 1)
{
System.out.print("Second Movie: ");
name = console.next();
m2.setName (name);
System.out.print("Director: ");
director = console.next();
m2.setDirector (director);
System.out.print("Size in MB: ");
size = console.nextInt();
m2.setSize(size);
System.out.print("Duration in minutes: ");
duration = console.nextInt();
m2.setDuration(duration);
moviecount++;
break;
}
else if(moviecount == 2)
{
System.out.print("Third Movie: ");
name = console.next();
m3.setName (name);
System.out.print("Director: ");
director = console.next();
m3.setDirector (director);
System.out.print("Size in MB: ");
size = console.nextInt();
m3.setSize(size);
System.out.print("Duration in minutes: ");
duration = console.nextInt();
m3.setDuration(duration);
moviecount++;
break;
}
else if(moviecount == 3)
{
System.out.print("Fourth Movie: ");
name = console.next();
m4.setName (name);
System.out.print("Director: ");
director = console.next();
m4.setDirector (director);
System.out.print("Size in MB: ");
size = console.nextInt();
m4.setSize(size);
System.out.print("Duration in minutes: ");
duration = console.nextInt();
m4.setDuration(duration);
moviecount++;
break;
}
else
{
System.out.print("Too many movies currently stored n" );
break;
}
case 2: System.out.print("Which movie to delete? (1), (2), (3), (4) n");
option = console.nextInt();
switch(option)
{
case 1: m1.setName(null);
m1.setDirector(null);
m1.setSize(0);
m1.setDuration(0);
System.out.print("Movie 1 deleted! ");
moviecount--;
break;
case 2: m2.setName(null);
m2.setDirector(null);
m2.setSize(0);
m2.setDuration(0);
moviecount--;
break;
case 3: m3.setName(null);
m3.setDirector(null);
m3.setSize(0);
m3.setDuration(0);
moviecount--;
break;
case 4: m4.setName(null);
m4.setDirector(null);
m4.setSize(0);
m4.setDuration(0);
moviecount--;
break;
}
case 3: System.out.print("Movies stored in database: n");
System.out.print(m1.getName()+"n");
System.out.print(m2.getName()+"n");
System.out.print(m3.getName()+"n");
System.out.print(m4.getName()+"n");
}
}
while(option!=9);
}
public static void main(String[] args){
Interface intFace = new Interface();
intFace.run();
}
}
问题在于您的设计。您正在遇到这个问题,因为您实际上并没有在任何地方存储电影。您只是创建4种不同的电影对象并将其打印出来。如果您更改了打印语句的顺序,它们将以不同的顺序。
您将需要添加某种数据结构 - 任何数组,列表或其他类型的集合来存储您的电影。
例如,您可能会创建一个List
来存储您的电影数据。
//create new List called movieList
List movieList = new ArrayList();
//add movies to the list
movieList.add(m1);
movieList.add(m2);
movieList.add(m3);
movieList.add(m4);
//remove movies from the list by position
movieList.remove(0);
movieList.remove(1);
movieList.remove(2);
movieList.remove(3);
您可以使用列表的add()
方法将电影添加到列表中,并使用remove()
方法将其删除。请记住,remove
在您提供的索引处删除元素,索引从0。
因此,例如,要删除第一部电影,您将调用movielist.remove(0(。第二部电影将在索引1处,等等
您特定实现的答案:您无法使用该MovieCount变量来确定要添加新的移动的插槽!
而是:只需浏览您的电影对象即可。并将数据推入第一个是空的。
含义:您可以在电影类上定义" isement(("方法,如果名称为null,则返回true。
,但仅用于记录:拥有并使用这些设置器方法是一种不好的方法。通常,您需要使用电影类的构造函数设置所有这些值,因为您不想以后更改该信息。
然后您只需做
movie1 = new...
创作新电影和
时movie1 = null
稍后将其删除。然后,您还可以轻松检查是否采用了一个插槽:
if (movie1 == null) {...