Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

JAVA HELP! my code compiles but there is still an error?

import java.util.*;

import java.text.*;

public class Stocks {

private int shares;

private int price;

private int temp;

private static int total;

private int finalPrice;

private int finalShares;

private Queue<Stocks> StockList = new LinkedList<Stocks>();

private static NumberFormat nf = NumberFormat.getCurrencyInstance();

public Stocks()

{

shares = 0;

price = 0;

}

public Stocks(int shares, int price)

{

this.shares = shares;

this.price = price;

}

public int getShares()

{

return this.shares;

}

public int getPrice()

{

return this.price;

}

public void setShares(int shares)

{

this.shares = shares;

}

public void setPrice(int price)

{

this.price = price;

}

public void sell() {

int sharesToSell = this.getShares();

int priceToSell = this.getPrice();

while (!StockList.isEmpty()) {

int numShares = StockList.peek().getShares();

int sharePrice = StockList.peek().getPrice();

if (numShares < sharesToSell || numShares == sharesToSell) {

temp = sharesToSell - numShares; // remaining shares to sell

finalShares = sharesToSell - temp; // # shares selling at price

finalPrice = priceToSell - sharePrice; // shares sold at adjusted price

total += (finalPrice * finalShares); // Calculates total price

StockList.remove();

sharesToSell = temp; // Remaining shares needed to be sold @ price

}

if (numShares > sharesToSell) {

temp = numShares - sharesToSell; // Remaining shares that were bought

finalPrice = priceToSell - sharePrice; // Shares sold at adjusted price

total += (finalPrice * sharesToSell); // adds to running total

StockList.peek().setShares(temp);

}

}

}

public void buy() {

int numShares = this.getShares();

int priceToBuy = this.getPrice();

Stocks newStock = new Stocks(numShares,priceToBuy);

StockList.add(newStock); // adds stock to list

int temptotal = (numShares * priceToBuy); // decreases running total

total += (-1 * temptotal);

}

public static int getTotal() { // gets total profit (or loss)

return total;

}

// *****MAIN METHOD*****

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

System.out.println("Enter transaction sequence:");

String input = scan.nextLine().trim();

String[] inputArray = new String[50];

String[] inputArray2 = new String[50];

int numShares, sharePrice;

inputArray = input.split(";");

for (String i : inputArray) {

if (i.toUpperCase().contains("BUY")) {

inputArray2 = i.split(" ");

inputArray2[4] = inputArray2[4].substring(1);

try {

numShares = Integer.parseInt(inputArray2[1]);

sharePrice = Integer.parseInt(inputArray2[4]);

Stocks newStock = new Stocks(numShares,sharePrice);

newStock.buy();

} catch (NumberFormatException e) {

System.out.println("Error");

return;

}

}

else if (i.toUpperCase().contains("SELL")) {

inputArray2 = input.split(" ");

inputArray2[4] = inputArray2[4].substring(1);

try {

numShares = Integer.parseInt(inputArray2[1]);

sharePrice = Integer.parseInt(inputArray2[4]);

Stocks newStock = new Stocks(numShares,sharePrice);

newStock.sell();

} catch (NumberFormatException e) {

System.out.println("Error");

return;

}

} else {

System.out.println("Error - input does not contain buy/sell");

}

} System.out.println(nf.format(getTotal()));

}

}

this program compiles but when i enter transaction sequence which is either buy/sell an error follows it

Update:

the error would be :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4

at Stocks.main(Stocks.java:110)

1 Answer

Relevance
  • 9 years ago

    And that error would be....?

    Edit: I'd look at the string passed into main()...there may be issues with

    inputArray = input.split(";");

    if that resulted in less than 5 tokens.

Still have questions? Get your answers by asking now.