本人实在是找不出来拿的错误
编译显示的item.get(i).setTotalNumber(item.get(i).getTotalNumber()-c);
item.get(i).setTotalNumber(item.get(i).getTotalNumber()+c);
这两行有错不知道哪的问题请高手帮忙指正下,谢谢!!
代码是:
import java.io.*;
import java.util.*;
class Item
{
String Code=null;
String Name=null;
String Category=null;
String MadeBy=null;
double ImportPrice=0.0;
double SellPrice=0.0;
int TotalNumber=0;

Item(String Code,String Name,String Category,String MadeBy,double ImportPrice,double SellPrice,int TotalNumber)
{
Code=Code;
Name=Name;
Category=Category;
MadeBy=MadeBy;
ImportPrice=ImportPrice;
SellPrice=SellPrice;
TotalNumber=TotalNumber;
}
public void setCode(String co)
{
Code=co;
}
public void setName(String na)
{
Name=na;
}
public void setCategory(String ca)
{
Category=ca;
}
public void setMadeBy(String ma)
{
MadeBy=ma;
}
public void setImportPrice(double p)
{
ImportPrice=p;
}
public void setSellPrice(double p)
{
SellPrice=p;
}
public void setTotaNumber(int n)
{
TotalNumber=n;
}

public String getCode()
{
return Code;
}
public String getName()
{
return Name;
}
public String getCategory()
{
return Category;
}
public String getMadeBy()
{
return MadeBy;
}
public double getImportPrice()
{
return ImportPrice;
}
public double getSellPrice()
{
return SellPrice;
}
public int getTotalNumber()
{
return TotalNumber;
}
}public class Store
{
private static List<Item> item=new ArrayList<Item>();
private static void readData(String filename)
{
BufferedReader dataReader=null;
try
{
dataReader=new BufferedReader(new FileReader("data.txt"));
}
catch(Exception e)
{
System.out.println("File not found");
System.exit(1);
}
while(true)
{
String aline=null;
try
{
aline=dataReader.readLine();
}
catch(Exception e)
{
System.out.println("Cannot read file");
System.exit(1);
}
if(aline==null)break;
String s[]=aline.split(",");
String code=s[0].trim();
String name=s[1].trim();
String category=s[2].trim();
String madeBy=s[3].trim();
double importPrice=Double.parseDouble(s[4].trim());
double sellPrice=Double.parseDouble(s[5].trim());
int number=Integer.parseInt(s[6].trim());
Item anItem=new Item(code,name,category,madeBy,importPrice,sellPrice,number);
item.add(anItem);
}
}
private static void showMenu() 
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
boolean quit = true;
while(!quit) 
{
System.out.println("1. Sell;");
System.out.println("2. Import;");
System.out.println("3. Search item;");
System.out.println("4. Print all items;");
System.out.println("5. Quit.");
Scanner in=new Scanner(System.in);
System.out.print("Please input your choice:");
int choice = in.nextInt();
switch(choice) 
{
case 1:sellItem();
break;
case 2:importItem();
break;
case 3:searchItem();
break;
case 4:printAllItems();
break;
case 5:System.out.println("System out.Thanks!");
quit=false;
break;
default:System.out.println("Error input.Please check out your input.");
break;
}
}
} public static void sellItem()
{
Scanner a=new Scanner(System.in);

String s=a.nextLine();
int i=0;
System.out.println("Please input a item code:");
while(!(item.get(i).getCode().equals(s)))
{                        
i++;
}
System.out.println("Please input the number for item sold out");
Scanner b=new Scanner(System.in);
int c=b.nextInt();
item.get(i).setTotalNumber(item.get(i).getTotalNumber()-c);
}
public static void importItem()
{
System.out.println("Please input a item code:");
Scanner a=new Scanner(System.in);
String s=a.nextLine();
int i=0;
while(!(item.get(i).getCode().equals(s)))
{                        
i++;
}
System.out.println("Please input the number for item imported:");
Scanner b=new Scanner(System.in);
int c=b.nextInt();
item.get(i).setTotalNumber(item.get(i).getTotalNumber()+c);
}
public static void searchItem()
{
System.out.println("Please input a item code:");
Scanner a=new Scanner(System.in);
String s=a.nextLine();
int i=0;
while(!(item.get(i).getCode().equals(s)))
{                     
i++;
}
System.out.println("The Code is: "+item.get(i).getCode());
System.out.println("The Name is: "+item.get(i).getName());
System.out.println("The Category is: "+item.get(i).getCategory());
System.out.println("It is madeBy: "+item.get(i).getMadeBy());
System.out.println("The ImportPrice is: "+item.get(i).getImportPrice());
System.out.println("The SellPrice is: "+item.get(i).getSellPrice());
System.out.println("The TotalNumber is: "+item.get(i).getTotalNumber());
}
public static void printAllItems()
{
for(int i=0;i<item.size();i++)
{
System.out.println("This is "+i+".");
System.out.println("The Code is: "+item.get(i).getCode());
System.out.println("The name is: "+item.get(i).getName());
System.out.println("The Category is: "+item.get(i).getCategory());
System.out.println("It is madeBy: "+item.get(i).getMadeBy());
System.out.println("The ImportPrice is: "+item.get(i).getImportPrice());
System.out.println("The SellPrice is: "+item.get(i).getSellPrice());
System.out.println("The TotalNumber is: "+item.get(i).getTotalNumber());
}
}

}

解决方案 »

  1.   

    编译出错的原因很简单,你写的Item有个方法是getTotalNumber()调用的时候是没有参数的,而在调用编译出错的那个方法item.get(i).setTotalNumber(item.get(i).getTotalNumber() - c)其实是调用的类似这样的getTotalNumber(int num)的方法,而你在Item里面没有定义
      

  2.   

    你原来的代码里面setTotalNum拼写出错了,写成
    public void setTotalNumber(int n) {
    TotalNumber = n;
    }
      

  3.   

    import java.io.*;
    import java.util.*;
    class Item
    {
    String Code=null;
    String Name=null;
    String Category=null;
    String MadeBy=null;
    double ImportPrice=0.0;
    double SellPrice=0.0;
    int TotalNumber=0;

    Item(String Code,String Name,String Category,String MadeBy,double ImportPrice,double SellPrice,int TotalNumber)
    {
    Code=Code;
    Name=Name;
    Category=Category;
    MadeBy=MadeBy;
    ImportPrice=ImportPrice;
    SellPrice=SellPrice;
    TotalNumber=TotalNumber;
    }
    public void setCode(String co)
    {
    Code=co;
    }
    public void setName(String na)
    {
    Name=na;
    }
    public void setCategory(String ca)
    {
    Category=ca;
    }
    public void setMadeBy(String ma)
    {
    MadeBy=ma;
    }
    public void setImportPrice(double p)
    {
    ImportPrice=p;
    }
    public void setSellPrice(double p)
    {
    SellPrice=p;
    }
    public void setTotalNumber(int n)
    {
    TotalNumber=n;
    }

    public String getCode()
    {
    return Code;
    }
    public String getName()
    {
    return Name;
    }
    public String getCategory()
    {
    return Category;
    }
    public String getMadeBy()
    {
    return MadeBy;
    }
    public double getImportPrice()
    {
    return ImportPrice;
    }
    public double getSellPrice()
    {
    return SellPrice;
    }
    public int getTotalNumber()
    {
    return TotalNumber;
    }
    }public class Store
    {
    private static List<Item> item=new ArrayList<Item>();
    public static void main(String[] args)throws IOException
    {
    {
    readData(args[0]);
    showMenu();
    }
    }
    public static void readData(String filename)
    {
    BufferedReader dataReader=null;
    try
    {
    dataReader=new BufferedReader(new FileReader("data.txt"));
    }
    catch(Exception e)
    {
    System.out.println("File not found");
    System.exit(1);
    }
    while(true)
    {
    String aline=null;
    try
    {
    aline=dataReader.readLine();
    }
    catch(Exception e)
    {
    System.out.println("Cannot read file");
    System.exit(1);
    }
    if(aline==null)break;
    String s[]=aline.split(",");
    String code=s[0].trim();
    String name=s[1].trim();
    String category=s[2].trim();
    String madeBy=s[3].trim();
    double importPrice=Double.parseDouble(s[4].trim());
    double sellPrice=Double.parseDouble(s[5].trim());
    int number=Integer.parseInt(s[6].trim());
    Item anItem=new Item(code,name,category,madeBy,importPrice,sellPrice,number);
    item.add(anItem);
    }
    }
    private static void showMenu() 
    {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    boolean quit = true;
    while(!quit) 
    {
    System.out.println("1. Sell;");
    System.out.println("2. Import;");
    System.out.println("3. Search item;");
    System.out.println("4. Print all items;");
    System.out.println("5. Quit.");
    Scanner in=new Scanner(System.in);
    System.out.print("Please input your choice:");
    int choice = in.nextInt();
    switch(choice) 
    {
    case 1:sellItem();
    break;
    case 2:importItem();
    break;
    case 3:searchItem();
    break;
    case 4:printAllItems();
    break;
    case 5:System.out.println("System out.Thanks!");
    quit=false;
    break;
    default:System.out.println("Error input.Please check out your input.");
    break;
    }
    }
    } public static void sellItem()
    {
    Scanner a=new Scanner(System.in);

    String s=a.nextLine();
    int i=0;
    System.out.println("Please input a item code:");
    while(!(item.get(i).getCode().equals(s)))
    {                        
    i++;
    }
    System.out.println("Please input the number for item sold out");
    Scanner b=new Scanner(System.in);
    int c=b.nextInt();
    item.get(i).setTotalNumber(item.get(i).getTotalNumber()-c);
    }
    public static void importItem()
    {
    System.out.println("Please input a item code:");
    Scanner a=new Scanner(System.in);
    String s=a.nextLine();
    int i=0;
    while(!(item.get(i).getCode().equals(s)))
    {                        
    i++;
    }
    System.out.println("Please input the number for item imported:");
    Scanner b=new Scanner(System.in);
    int c=b.nextInt();
    item.get(i).setTotalNumber(item.get(i).getTotalNumber()+c);
    }
    public static void searchItem()
    {
    System.out.println("Please input a item code:");
    Scanner a=new Scanner(System.in);
    String s=a.nextLine();
    int i=0;
    while(!(item.get(i).getCode().equals(s)))
    {                     
    i++;
    }
    System.out.println("The Code is: "+item.get(i).getCode());
    System.out.println("The Name is: "+item.get(i).getName());
    System.out.println("The Category is: "+item.get(i).getCategory());
    System.out.println("It is madeBy: "+item.get(i).getMadeBy());
    System.out.println("The ImportPrice is: "+item.get(i).getImportPrice());
    System.out.println("The SellPrice is: "+item.get(i).getSellPrice());
    System.out.println("The TotalNumber is: "+item.get(i).getTotalNumber());
    }
    public static void printAllItems()
    {
    for(int i=0;i<item.size();i++)
    {
    System.out.println("This is "+i+".");
    System.out.println("The Code is: "+item.get(i).getCode());
    System.out.println("The name is: "+item.get(i).getName());
    System.out.println("The Category is: "+item.get(i).getCategory());
    System.out.println("It is madeBy: "+item.get(i).getMadeBy());
    System.out.println("The ImportPrice is: "+item.get(i).getImportPrice());
    System.out.println("The SellPrice is: "+item.get(i).getSellPrice());
    System.out.println("The TotalNumber is: "+item.get(i).getTotalNumber());
    }
    }

    }
    你好,我在原程序中加了个main,编译成功但是运行显示Exception in thread "mian" java.lang.ArrayIndexOutOfBoundsException:0 at Store.main(Store.java:88)这怎么解决呢!?
      

  4.   

    你问问题自己也想别人怎么回答你,你读的本地的文件data.txt,那里面内容不清楚,一般的数组越界错误你自己难道不会处理?