所以,首先,在我的课程中,我需要声明各种领域,包括一个固定长度的演员的字符串数组(5)。我的默认构造函数现在需要设置这些值,但后来我认为我需要将5个字符串值设置为null,这样我就可以将actor添加到极限。 然后,我希望能够使用传递给构造函数的值创建类的实例,最后将actor添加到给定电影的字符串数组中 - 其中有一个免费点(并且在那里有一个例外)不是一个。)
到目前为止我所拥有的:
public class Film {
private String title;
private String[] actors = new String[5]; // can I set the limit here and use this string below?
private double budget;
// default constructor:
public Film() {
title = "Default title";
// This creates a new string though and doesn't limit to 5 :o(
authors = new String[] {"a","b","c","d","e"};
budget = 1.1
}
// constructor which takes values passed in:
public Film(String title, double budget, String[] actors) {
this.title = title;
this.budget = budget;
this.actors = actors;
}
}
在我的主程序中,我有以下内容显示预算值后的逗号错误,我无法解决原因:
public class Main {
Film homeAlone = new Film("Home Alone", 10.9, ("McCauley", "John", "Paul", "George", "Ringo"));
}
至于添加演员'方法 - 我不知道从哪里开始。任何帮助将不胜感激!
干杯,
麦克
答案 0 :(得分:2)
您正在初始化此行中的数组
private String[] actors = new String[5];
再次在这一行
authors = new String[] {"a","b","c","d","e"};
第一个语句创建了一个长度为5的空数组,它确实将其限制为5个元素。如果你写下面的语句,它将抛出一个异常,因为创建的数组有5个只有0 ... 4的区域,只能容纳5个元素
private String[] actors = new String[5];
actors[5]="John";
但是当你编写第二个语句时,你已经通过在构造函数本身中传递6个元素将前一个数组重新初始化为6个元素,并创建了一个长度为6的新数组,其中包含在构造函数中传递的6个元素。
现在再次如果你想执行下面的语句,它将抛出异常。
authors = new String[] {"a","b","c","d","e"};
authors[6]="f";
有关Java中数组的更多信息https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
答案 1 :(得分:2)
为演员使用 varargs :
public Film(String title, double budget, String... actors) {
this.title = title;
this.budget = budget;
this.actors = actors;
}
然后你可以用任意数量的演员创建一部新电影:
Film a = new Film("Foo", 1.1, "Ringo");
Film b = new Film("Bar", 1.1, "Ringo", "John", "Paul");
删除默认构造函数 - 它没有用处。
不要为字段声明数组;只需代码String[] actors;
答案 2 :(得分:1)
你必须加分号;在budget = 1.1
之后
你没有名为authors
的变量,你的意思是actors
?
你无法初始化像
这样的字符串数组(“麦考利”,“约翰”,“保罗”,“乔治”,“林戈”)
必须是new String[]{"McCauley", "John", "Paul", "George", "Ringo"}
我建议您使用像eclipse或netbeans这样的IDE,因为它可以为您提供所有这些问题以及如何解决这些问题的线索
编辑基于OP问题限制为5: 如果你想限制为5,你可以:
接受任何大小的数组,只填充前5个
如果大小超过5的数组,则抛出异常进行验证 通过
答案 3 :(得分:1)
你应该将你的Film课程实例化如下:
Film film = new Film("Movie", 10.00, new String[]{"a", "b", "c","d","e"});
这是因为你想将一个数组传递给Film构造函数。
至于将电影添加到电影中,您可以在电影类中添加一个功能,以验证是否存在免费广告,如果是这种情况,请将其添加到免费广告位。