Java数组:通过用户输入选择和替换值

时间:2012-06-15 16:16:57

标签: java arrays user-input replace

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

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

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

3 个答案:

答案 0 :(得分:0)

我看不到你的替换工作,因为看起来你正在将库类型和字符串类型与.equals()进行比较。

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

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

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

答案 1 :(得分:0)

要使代码生效,您需要覆盖Library.equals方法以仅比较字符串。否则,您可以将一个样本的视频标题与参数replaceTo进行比较。

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

祝你好运。

答案 2 :(得分:0)

尝试将replaceTo与视频名称(或replaceTo应匹配的内容)进行比较:

if (videos[i].getName().equals(replaceTo)) {