Я смотрел на него в течение одного часа, и я не могу понять, почему он продолжает говорить мне ту же ошибку. Для тех, кто задается вопросом, что моя программа, в основном она читает текстовый файл, который содержит штрих-коды, имя и цену. Затем я прочитаю другой текстовый файл, который содержит только штрих-коды, и напечатает соответствующее имя и цену. К сожалению, он печатает только одну строку, а затем показывает эту ошибку: -Почему моя программа показывает эту ошибку?
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 99, Size: 99
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at javaapplication9.JavaApplication9.Search(JavaApplication9.java:66)
at javaapplication9.JavaApplication9.main(JavaApplication9.java:85)
главный
public class JavaApplication9
{
long value1;
String value2;
double value3;
ArrayList<String> toBeSplit = new ArrayList();
String[] split;
ArrayList <Inventory> productList = new ArrayList<>();
ArrayList <Long> barcodes = new ArrayList();
public long ReadFile(String sfile) throws IOException
{
int x = 0;
File inFile = new File(sfile);
BufferedReader reader = new BufferedReader(new FileReader(inFile));
String sline = null;
while ((sline=reader.readLine()) != null)
{
toBeSplit.add(x,sline);
x++;
}
reader.close();
return inFile.length();
}
public void splitString()
{
int a = 0;
while (a<toBeSplit.size())
{
split = toBeSplit.get(a).split(",");
value1 = Long.parseLong(split[0]);
value2 = split[1];
value3 = Double.parseDouble(split[2]);
productList.add(new Inventory (value1,value2,value3,split[0]));
a++;
}
}
public long readBarcodes (String file) throws IOException
{
File text = new File(file);
int x = 0;
BufferedReader reader = new BufferedReader(new FileReader(text));
String line = null;
while ((line=reader.readLine()) != null)
{
long barcod = Long.parseLong (line);
barcodes.add(x,barcod);
x++;
}
reader.close();
return text.length();
}
public void Search()
{
int size = barcodes.size();
int counter = 0;
for (Inventory e : productList)
{
if ((e.getBarcode() - barcodes.get(counter) == 0) && counter <= size)
{
System.out.println (e.getRBarcode()+ "\t" + e.getName() + "\t"+ e.getPrice());
}
else
{
counter++;
}
}
}
public static void main(String[] args)
{
try
{
JavaApplication9 instance = new JavaApplication9();
instance.ReadFile("Products (1).csv");
instance.splitString();
instance.readBarcodes("Items.txt");
instance.Search();
}
catch (IOException e)
{
System.out.print ("Error");
}
}
}
инвентарь класс
public class Inventory
{
long barcode;
String name,realBar;
double price;
public Inventory (long bars,String pname,double prices,String realBarcode)
{
barcode = bars;
name = pname;
price = prices;
realBar = realBarcode;
}
public long getBarcode()
{
return barcode;
}
public String getName()
{
return name;
}
public String getRBarcode()
{
return realBar;
}
public double getPrice()
{
return price;
}
}
выглядит как 'Off-на-One' ошибка –
сообщение об ошибке на самом деле говорит вам все детали, необходимые, чтобы найти точное местоположение проблемы , Программа пытается получить доступ к элементу один за последним, и это происходит в строке 66 в файле 'JavaApplication9.java' – Henry