Я создал текстовый файл с 15 случайными плавающими числами, и я пытаюсь создать программу, которая сравнивает их все, начиная с первого и до последнего.
для сравнения и scanner.nextDouble
.
Моя проблема в том, что на последних двух номерах он не может их сравнить, потому что теперь есть 16-й номер, поэтому он дает ошибку из-за использования i+1
.
Есть ли способ сделать программу остановленной на 15-м номере, чтобы она не выдавала ошибку?Сравнение плавающих чисел из текстового файла
public static void main(String [] args)
throws IOException
{
int num, countUp, countDown, countSame;
num = 0;
countUp = 0;
countDown = 0;
countSame = 0;
FileInputStream stocks = new FileInputStream(args[0]);
Scanner scanner = new Scanner(stocks);
ArrayList<Double> stocksList = new ArrayList<Double>();
while (scanner.hasNextLine())
{
stocksList.add(scanner.nextDouble());
}
//Dilbert's Rule
for(int i=0;i<stocksList.size(); i++)
{
num++;
System.out.printf(num + "%8.3f",stocksList.get(i));
if(stocksList.get(i+1) > stocksList.get(i))
{
countUp++;
}
else if (stocksList.get(i+1) < stocksList.get(i))
{
countDown++;
}
else
{
countSame++;
}
if(countUp >= 3 && (countDown > 1 || countSame >= 1))
{
System.out.print(" " + "SELL");
countUp = 0;
countSame = 0;
}
else if (countDown >= 3 && (countUp > 1 || countSame >= 1))
{
System.out.print(" " + "BUY");
countDown = 0;
countSame = 0;
}
System.out.println();
}
}
Я сделал несколько серьезных изменений с момента последнего времени, и теперь единственная ошибка, я получаю это IndexOutOfBoundsException
.
Плюс Если я, но -1
на цикле for
, как многие предложили, он уходит, но я теряю свою 15-ю линию.
Я знаю, что виноват, спрашиваю, есть ли способ остановить программу на 15-й строчке, чтобы она не выдала ошибку «IndexOutOfBoundsException». Как я уже сказал, 'i
Последний элемент можно получить после цикла for вручную. После цикла for вы можете делать все, что хотите, с помощью последнего элемента, например: 'System.out.println (stockList.get (stockList.size() - 1))'. Или внутри цикла вы можете добавить условие 'if (i == stockList.size() - 1)' и выполнить требуемую операцию во втором последнем и последнем элементе. – Atri
это сработало спасибо. –