0

在我正在创建的程序中,用户将输入值来创建视频数组。每个视频包含多个数据字段(编号、标题、发布者、持续时间和日期)。然而,我目前试图实现的是让用户在他们刚刚创建的数组中选择一个特定的视频,选择他们希望重命名的数据字段,重命名值,然后将重命名的值设置为新值。这是我将视频添加到数组的代码:

public Library createLibrary()
{
    Library video = new Library();
    java.util.Scanner scannerObject =new java.util.Scanner(System.in); 
    for (int i = 0; i < videos.length; i++)
    {
    //User enters values into set methods within the Library class
    System.out.print("Enter video number: " + (i+1) + "\n");
    String number = scannerObject.nextLine();
    System.out.print("Enter video title: " + (i+1) + "\n");
    String title = scannerObject.nextLine();
    System.out.print("Enter video publisher: " + (i+1) + "\n");
    String publisher = scannerObject.nextLine();
    System.out.print("Enter video duration: " + (i+1) + "\n");
    String duration = scannerObject.nextLine();
    System.out.print("Enter video date: " + (i+1) + "\n");
    String date= scannerObject.nextLine();
    System.out.print("VIDEO " + (i+1) + " ENTRY ADDED " + "\n \n");
    //Initialize arrays
    videos[i] = new Library ();
    videos[i].setVideo( number, title, publisher, duration, date  );
    }
    return video;
}

对于那些不明白我的意思的人来说,这是我的选择和替换功能的基本概念:

public void replaceVideo(Library[] videos, String replaceTo, String replaceWith) 
    {
    for (int i = 0; i < videos.length; i++) 
        if (videos[i].equals(replaceTo)) {
            videos[i]= replaceWith;
        }
    }

更简单的解决方案将不胜感激。谢谢。

4

3 回答 3

0

我看不到您的替换一直有效,因为您似乎正在将库类型和字符串类型与 .equals() 进行比较。

如果您使用 Collection 类之一而不是数组,则 replace 方法将更改为

public void replaceVideo(Vector<Library> videos, Library current, Library newCopy)
{
  Collections.replaceAll(videos, current, newCopy);
}

我使用了 Vector,但您可以根据需要使用 Set、List 等。

于 2012-06-15T16:35:58.760 回答
0

为了使您的代码正常工作,您需要重写 Library.equals 方法以仅比较字符串。否则,您可以将一个样本的视频标题与参数 replaceTo 进行比较。

当然,重写 equals 方法是 OOP 优雅的。试试我的建议和托马斯

祝你好运。

于 2012-06-16T00:07:39.300 回答
0

尝试比较replaceTo视频的名称(或任何replaceTo应该匹配的名称):

if (videos[i].getName().equals(replaceTo)) {
于 2012-06-16T00:23:17.593 回答