比较文本文件中的浮点数

时间:2016-01-04 04:17:13

标签: java

我创建了一个包含15个随机浮动数字的文本文件,我试图创建一个程序,从第一个到最后一个比较所有程序。 我使用if (stocksList.get(i) > stocksList.get(i+1))进行比较,使用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行。

1 个答案:

答案 0 :(得分:0)

您正在stocksList.get(i+1),而在for循环中,您正在查看i<stocksList.size()。这必然会给你IndexOutOfBoundsException

对于循环的最后一次迭代,您将i的值设为stockList.size()-1,并且您希望访问i+1 stockList.size()的位置。这会给你例外。

您应该检查循环中的条件i<stocksList.size() - 1是否发生异常。