删除用户输入的信息

时间:2017-04-16 03:22:03

标签: java

我正在尝试为一些家庭作业制作电影数据库。卡住添加删除功能。由于我的moivecount变量,我试图重新添加另一部电影时遇到困难。如果我删除movie3,如果我有4部电影,那么moviecount == 3当我尝试添加另一部电影时,当我需要添加movie3时,它再次要求movie4。

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();
}
}

2 个答案:

答案 0 :(得分:1)

问题在于你的设计。您遇到此问题是因为您实际上并未将电影存储在任何地方。您只是创建了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等等。

答案 1 :(得分:0)

您具体实施的答案:您无法使用该moviecount变量来确定要在哪个插槽中添加新动作!

相反:只需走过你的电影对象。并将数据推入第一个空的数据。

含义:你可以定义一个" isEmpty()" Movie类上的方法,如果名称为null,则返回true。

但仅仅是为了记录:拥有和使用这些setter方法是一种糟糕的方法。通常,您可能希望使用影视类的构造函数设置所有这些值,因为您不希望以后允许更改该信息。

然后你只需要做

movie1 = new... 

创建新电影时

movie1 = null

稍后删除它。然后您还可以轻松检查是否采用了插槽:

if (movie1 == null) {...