在我正在创建的程序中,用户将输入值以创建视频数组。每个视频包含多个数据字段(数字,标题,发布者,持续时间和日期)。然而,我目前试图实现的是让用户选择他们刚创建的数组中的特定视频,选择他们希望重命名的数据字段,重命名该值,然后将重命名的值设置为新值。这是我将视频添加到数组的代码:
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;
}
}
更简单的解决方案将不胜感激。感谢。
答案 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)) {