Java 如何在构造函数类中创建数组?
我正在创建一个图书盘点计划。 我有两个类,一个是主类,另一个是构造函数类名Java 如何在构造函数类中创建数组?,java,arrays,Java,Arrays,我正在创建一个图书盘点计划。 我有两个类,一个是主类,另一个是构造函数类名Item。 在主类上,我创建了一个数组(Item[]book=newitem[100])来存储我的输入。 在我的Item类中,我想在下面创建一个函数 public boolean addItem(Item[] iArray, String itemCode){ boolean c = false; for(int i=0; i<iArray.length; i++){ if(iA
Item
。
在主类上,我创建了一个数组(Item[]book=newitem[100])
来存储我的输入。
在我的Item
类中,我想在下面创建一个函数
public boolean addItem(Item[] iArray, String itemCode){
boolean c = false;
for(int i=0; i<iArray.length; i++){
if(iArray[i].getItemCode().equals(itemCode)){
c = true;
}
else{
c = false;
}
}
return c;
}
这是我的项目类
import java.util.*;
公务舱司机{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
整数选择,数量,NOI=0;
双人cprice、雪碧、折扣;
字符串itc,name,status=“可用”;
布尔检查=真;
项目[]账簿=新项目[100];
扫描仪s1=新的扫描仪(System.in);
做{
项目显示=新项目();
display.displaymenu();
系统输出打印(“请选择菜单:”);
choice=s1.nextInt();
如果(选项==1){
做{
系统输出打印(“请输入项目代码:”);
itc=s1.next();
//对于(int i=0;i,您的方法并不能满足您的要求,因为即使您找到了项代码,循环也会继续。您可能希望这样:
public boolean addItem(Item[] iArray, String itemCode){
for (Item item : iArray) {
if (item.getItemCode().equals(itemCode)) {
return true;
}
}
return false;
}
请注意,您发布的方法的名称似乎很奇怪,因为它没有在任何地方添加任何内容
你也可以考虑使用<代码>列表<代码>(<代码> ARAYLIST/<代码>等),而不是<代码>项目[]/Copy>
< P>我不确定我理解你正在寻找什么,所以如果我的答案是无关的,只评论它,我就删除。
我假设您正在尝试存储信息:将新项及其代码添加到数组中。但我不确定您是否:
- 在插入项目之前,尝试确保项目在数组中的唯一性:
也许您可以使用一组代码,这将简化您的问题,只需检查.contains(),然后添加或不添加它
- 尝试将其添加到列表中,如果它已经存在,则执行一些操作(增加代码的图书数量?)
也许您可以使用HashMap,将代码作为键,将book作为项
在当前状态下,方法addItem没有添加任何内容,只要返回数组中的最后一本书是否与代码匹配…问题不太清楚,请尝试改进它。该方法与以下一行代码相同:return iArray[iArray.length-1].getItemCode().equals(itemCode);
仅当最后一个itemcode等于给定的itemcode时才返回。函数仅返回(int y=0;y<100;++y){iArray[y]=new Item();}它正在创建吗?为什么你的方法在没有添加项目时称为addItem…?是的,实际上此addItem不用于添加项目。它正在查找现有项目代码是否与我的新输入项目代码匹配,它将返回false,因此它将再次循环,希望你输入新项目代码。但问题是它不会循环,并且有错误或者我刚才展示了。我不知道它有什么问题,但它可以编译并运行。当我输入第二项代码时,错误就出现了。好的,那么你应该发布堆栈跟踪和NPE出现的行
import java.util.*;
public class Driver {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int choice,quantity,NOI=0;
double cprice,sprice,discount;
String itc,name,status = "Available";
boolean check = true;
Item[] book = new Item[100];
Scanner s1 = new Scanner(System.in);
do{
Item display = new Item();
display.displaymenu();
System.out.print("Please Select Menu: ");
choice = s1.nextInt();
if(choice==1){
do{
System.out.print("Please Enter the Item Code: ");
itc = s1.next();
//for(int i=0; i<book.length; i++){
//book[i].addItem(book, itc);
if(display.addItem(book, itc)==true){
System.out.println("the book item code already exist."+NOI);
check = false;
}
else
{
check = true;
} //This is the question where i faced.
//}
}while(check==false);
System.out.print("Please Enter the Description: ");
name = s1.next();
System.out.print("Please Enter the Quantity: ");
quantity = s1.nextInt();
System.out.print("Please Enter the Cost Price: ");
cprice = s1.nextDouble();
System.out.print("Please Enter the Sell Price: ");
sprice = s1.nextDouble();
System.out.print("Please Enter the Discount: ");
discount = s1.nextDouble();*/
book[NOI] = new Item(itc,name,quantity,cprice,sprice,discount,status);
NOI++;
}
public boolean addItem(Item[] iArray, String itemCode){
for (Item item : iArray) {
if (item.getItemCode().equals(itemCode)) {
return true;
}
}
return false;
}