Java 用户输入了数组大小的输入,但数组大小不为';不等于用户输入
谁能告诉我为什么数据定义类中titles数组的数组大小不等于用户输入的值,该值是从实现类传入的,并设置为数据定义类中的实例变量 这是数据定义类Java 用户输入了数组大小的输入,但数组大小不为';不等于用户输入,java,Java,谁能告诉我为什么数据定义类中titles数组的数组大小不等于用户输入的值,该值是从实现类传入的,并设置为数据定义类中的实例变量 这是数据定义类 public class Photograph { private int maxTakes; public Photograph() { this.titles = new String[this.maxTakes]; numPhotosTaken = 0; } public void setMa
public class Photograph {
private int maxTakes;
public Photograph() {
this.titles = new String[this.maxTakes];
numPhotosTaken = 0;
}
public void setMaxTakes(int maxTakes) {
this.maxTakes = maxTakes;
}
public boolean setTitle(String title) {
if (this.numPhotosTaken < this.titles.length) {
this.titles[numPhotosTaken] = title;
numPhotosTaken++;
return true;
}
else {
return false;
}
}
}
创建一个接受maxTakes值的构造函数,并使用它:
Photograph photo = new Photograph(Integer.parseInt(JOptionPane.showInputDialog("Enter maximum number of photos to take")));
您不再需要setMaxTakes
,因为它是在构造函数中设置的
class Photograph {
private int maxTakes;
private String[] titles;
private int numPhotosTaken;
public Photograph(int maxTakes) {
this.maxTakes = maxTakes;
this.titles = new String[maxTakes];
numPhotosTaken = 0;
}
public boolean setTitle(String title) {
if (this.numPhotosTaken < this.titles.length) {
this.titles[numPhotosTaken] = title;
numPhotosTaken++;
return true;
}
else {
return false;
}
}
}
类照片{
私有整数最大值;
私有字符串[]标题;
纽普霍托斯塔肯私人酒店;
公共照片(int maxTakes){
this.maxTakes=maxTakes;
this.titles=新字符串[maxTakes];
numPhotosTaken=0;
}
公共布尔集合标题(字符串标题){
if(this.numPhotosTaken
创建一个接受maxTakes值的构造函数,并使用它:
Photograph photo = new Photograph(Integer.parseInt(JOptionPane.showInputDialog("Enter maximum number of photos to take")));
您不再需要setMaxTakes
,因为它是在构造函数中设置的
class Photograph {
private int maxTakes;
private String[] titles;
private int numPhotosTaken;
public Photograph(int maxTakes) {
this.maxTakes = maxTakes;
this.titles = new String[maxTakes];
numPhotosTaken = 0;
}
public boolean setTitle(String title) {
if (this.numPhotosTaken < this.titles.length) {
this.titles[numPhotosTaken] = title;
numPhotosTaken++;
return true;
}
else {
return false;
}
}
}
类照片{
私有整数最大值;
私有字符串[]标题;
纽普霍托斯塔肯私人酒店;
公共照片(int maxTakes){
this.maxTakes=maxTakes;
this.titles=新字符串[maxTakes];
numPhotosTaken=0;
}
公共布尔集合标题(字符串标题){
if(this.numPhotosTaken
在调用setMaxTakes()
之前已创建数组。在创建长度为maxTakes
的数组后,更改maxTakes
的值不会有任何效果
您需要将setMaxTakes()
的方法更改为以下内容:
public void setMaxTakes(int maxTakes) {
titles = new String[maxTakes];
}
或者使用@Gremash发布的答案(这是正确的方法)。在调用
setMaxTakes()
之前,已经创建了数组。在创建长度为maxTakes
的数组后,更改maxTakes
的值不会有任何效果
您需要将setMaxTakes()
的方法更改为以下内容:
public void setMaxTakes(int maxTakes) {
titles = new String[maxTakes];
}
或者使用@Gremash发布的答案(这是正确的做法)。你能告诉我是什么让你认为大小不一样吗?输出/错误堆栈?您的数组在构造函数中使用值
maxTakes
进行初始化,调用构造函数时,该值为0。当我尝试输入照片标题时,总是会收到错误消息“不允许更多照片”的提示。您能告诉我是什么让您认为大小不一样吗?输出/错误堆栈?您的数组在构造函数中使用值maxTakes
初始化,调用构造函数时该值为0。当我尝试输入照片标题时,总是会收到错误消息“不允许更多照片”的提示实际上我正在更新我的答案,以包括亚辛建议的代码,但他打了我一顿:我实际上是在更新我的答案中,包括亚辛提出的代码,但他把我打败了: