Java静态数组修改
我有以下两个java类(如下所列)类BookInfo声明数组的静态块Java静态数组修改,java,arrays,static,Java,Arrays,Static,我有以下两个java类(如下所列)类BookInfo声明数组的静态块 public class BookInfo { // Global arrays accessible by all methods public static String[] isbnInfo; public static String[] bookTitleInfo; public static String[] authorInfo; public static S
public class BookInfo {
// Global arrays accessible by all methods
public static String[] isbnInfo;
public static String[] bookTitleInfo;
public static String[] authorInfo;
public static String[] publisherInfo;
public static String[] dateAddedInfo;;
public static int[] qtyOnHandInfo;
public static double[] wholesaleInfo;
public static double[] retailInfo;
static {
isbnInfo = new String[] {
"978-0060014018",
"978-0449221431",
"978-0545132060",
"978-0312474881",
"978-0547745527"
};
bookTitleInfo = new String[] {
"The Greatest Stories",
"The Novel",
"Smile",
"The Bedford Introduction to Drama",
"AWOL on the Appalachian Trail"
};
authorInfo = new String[] {
"Rick Beyer",
"James A. Michener",
"Raina Telgemeier",
"Lee A. Jacobus",
"David Miller"
};
publisherInfo = new String[] {
"HerperResource",
"Fawcett",
"Graphix",
"Bedford St. Martins",
"Mariner Books"
};
dateAddedInfo = new String[] {
"05/18/2003",
"07/07/1992",
"02/01/2010",
"09/05/2008",
"11/01/2011"
};
qtyOnHandInfo = new int[] {7, 5, 10, 2, 8};
wholesaleInfo = new double[] {12.91, 7.99, 6.09, 54.99, 10.17};
retailInfo = new double[] {18.99, 3.84, 4.90, 88.30, 14.95};
}
public static void BookInfo() {
System.out.println(" Serendipity Booksellers");
System.out.println(" Book Information\n");
for(int i = 0; i < isbnInfo.length; i++){
System.out.println("ISBN: " + isbnInfo[i]);
System.out.println("Title: " + bookTitleInfo[i]);
System.out.println("Author: " + authorInfo[i]);
System.out.println("Publisher: " + publisherInfo[i]);
System.out.println("Date Added: " + dateAddedInfo[i]);
System.out.println("Quantity-On-Hand: " + qtyOnHandInfo[i]);
System.out.println("Wholesale Cost: $ " + wholesaleInfo[i]);
System.out.println("Retail Price: $ " + retailInfo[i]);
System.out.println();
}
}
}
我可以从其他类主菜单轻松访问一些功能:BookInfo BookInfo=new BookInfo();bookinfo.bookinfo();System.out.println(bookinfo.isbnInfo[0]);如何从主菜单修改(添加、删除、编辑等)?非常感谢您的任何想法和建议 您已将数组声明为私有,因此它们是私有的。您必须编写+访问器方法+以返回相应的数组,或者更优雅地编写访问、搜索、修改等单个数组项的方法。您已将数组声明为私有,因此它们是私有的。您必须编写+访问器方法+以返回相应的数组,或者更优雅地编写访问、搜索、修改等单个数组项的方法。如果我理解正确,您想从不同的类文件访问数组的值或任何变量/函数吗
ClassName.VariableName=无论什么代码>
当你使用
ClassName变量=新的ClassName()代码>
每次调用该类时,它都会运行该类。请确保变量
公共静态VariableType Variablename代码>
或者,如果我理解正确,您将无法调用/更改它,您希望从不同的类文件访问数组的值或任何变量/函数
ClassName.VariableName=无论什么代码>
当你使用
ClassName变量=新的ClassName()代码>
每次调用该类时,它都会运行该类。请确保变量
公共静态VariableType Variablename代码>
或者您将无法调用/更改它您只是无法在创建新元素后将其“添加”到。从oracle教程页面:
数组是一个容器对象,它保存单个类型的个固定的值。数组的长度是在创建数组时建立的。创建后,其长度是固定的
因此,如果您想从列表中添加和删除元素,我建议您使用一个对象,它可以定义为
列表接口的可调整大小的数组实现
例如,您可以替换代码行
private static String[] isbnInfo;
为了
在你的公开课上:
String[] isbnInfo = BookInfo.getIsbnInfo();
还可以使用公共方法编辑数组,如:
public static void replaceIsbnInfo(int index, String isbn)
{
isbnInfo[index] = isbn;
}
在你的菜单课上
BookInfo.replaceIsbnInfo(1, "978-0547745527");
我希望这有帮助。干杯 在创建新元素之后,您无法将其“添加”到。从oracle教程页面:
数组是一个容器对象,它保存单个类型的个固定的值。数组的长度是在创建数组时建立的。创建后,其长度是固定的
因此,如果您想从列表中添加和删除元素,我建议您使用一个对象,它可以定义为
列表接口的可调整大小的数组实现
例如,您可以替换代码行
private static String[] isbnInfo;
为了
在你的公开课上:
String[] isbnInfo = BookInfo.getIsbnInfo();
还可以使用公共方法编辑数组,如:
public static void replaceIsbnInfo(int index, String isbn)
{
isbnInfo[index] = isbn;
}
在你的菜单课上
BookInfo.replaceIsbnInfo(1, "978-0547745527");
我希望这有帮助。干杯 你把这件事搞砸了
您应该首先创建一个“BookInfo”类(但不是您定义的类),该类包含isbnInfo、bookTitleInfo、authorInfo等实例字段(每个字段一本书只有一个实体,而不是数组)
然后,为每本书创建并初始化相应的BookInfo对象
接下来,将这些BookInfo对象的集合放在一个可搜索的对象中,例如HashMap(对于单个搜索字段),或者将它们放在某种数组中,并构建单独的HashMap或任何从搜索参数映射到数组索引的对象(将所有片段锚定在“Library”对象中)
当有人搜索一本书时,返回BookInfo对象,它可以有“getter”方法来提取(理想情况下是私有的)实例字段值。这会完整地返回关于这本书的所有信息。你把这件事搞砸了
您应该首先创建一个“BookInfo”类(但不是您定义的类),该类包含isbnInfo、bookTitleInfo、authorInfo等实例字段(每个字段一本书只有一个实体,而不是数组)
然后,为每本书创建并初始化相应的BookInfo对象
接下来,将这些BookInfo对象的集合放在一个可搜索的对象中,例如HashMap(对于单个搜索字段),或者将它们放在某种数组中,并构建单独的HashMap或任何从搜索参数映射到数组索引的对象(将所有片段锚定在“Library”对象中)
当有人搜索一本书时,返回BookInfo对象,它可以有“getter”方法来提取(理想情况下是私有的)实例字段值。这将完整地返回有关该书的所有信息。在所有选项中,ArrayList似乎是最灵活的。
甚至有效的Java第二版,第25项:更喜欢列表而不是数组。谢谢大家的意见 ArrayList似乎是所有选项中最灵活的。
甚至有效的Java第二版,第25项:更喜欢列表而不是数组。谢谢大家的意见 将它们公开是合理的吗?@Vladimir过去25年的所有面向对象编程经验都说“不”。编写方法。将它们公开是否合理?@Vladimir过去25年所有面向对象编程经验都说“不”。写方法。你说“我如何从这个类访问数组列表?”但你没有定义“数组列表”是什么意思。你说“我如何从这个类访问数组列表?”但你没有定义“数组列表”是什么意思。但是,你可以创建一个新数组,然后