Wie um zu verhindern, array out of bounds

Ich versuche, ein Programm zu schreiben, um zu maximieren den Gewinn in den Kauf und Verkauf von Aktien. Ich bin versucht, zu überprüfen, ob der Wert in den nächsten index der größer ist als der Wert im aktuellen index-position jedoch meine loops Ergebnisse im array out of bounds. Seinen Auftritt in dieser Zeile wenn((Aktie[i]) < (Aktie[i+1]).) Was ist der beste Ansatz, um dies zu verhindern.

Edit: ich habe eine Liste der Aktienkurse. Jeden Tag kann ich entweder kaufen oder zu verkaufen, zu kaufen oder zu verkaufen. Mein Ansatz ist der Durchschnitt der Aktienkurse. Wenn der Preis unter dem Durchschnitt liegt, dann "kaufen", wenn die nächsten Tage der Preis noch niedriger halten Sie dann "kaufen". Und Umgekehrt. wenn Zahl größer ist als der Durchschnitt dann verkaufen, wenn der Tag danach ist noch größer, dann halten Verkauf. Idealerweise auf Aktien[9] werde ich kaufen, bei 4 Euro und auf Aktien[11] werde ich verkaufen bei €19. Jedoch, wenn es darum geht zu prüfen, ob zu verkaufen oder nicht, endet array out of bounds, da Sie versuchen, überprüfen Sie die nächste index nach Aktien[11].

public static void main(String[] args)
{
    int [] shares ={3,7,4,2,10,11,8,5,4,8,19};
    int average= 0;
    int  buyOrSell = 0;
    int profit = 0;

    for(int i = 0; i< shares.length; i++)
    {
        average += shares[i];
    }

    average  /= shares.length;
    System.out.println(average);

    for(int i = 0; i < shares.length; i++)
    {
            if((shares[i] <= average) && (buyOrSell == 0))
            {
                if((shares[i]) < (shares[i+1]))
                {
                System.out.println("Buy" + shares[i]);
                buyOrSell++;
                System.out.println("Profit: " + (profit -= shares[i]));
                }
                else System.out.println("Hold Buy" + shares[i]);

            }

            if(shares[i] >= average && buyOrSell == 1)
            {
                if((shares[i]) > (shares[i+1]))
                {
                System.out.println("Sell" + shares[i]);
                buyOrSell--;
                System.out.println("Profit: " + (profit += shares[i]));
                }

                else System.out.println("Hold Sell" + shares[i]);
            }


    }

    System.out.println("Profit: "+ profit);

}

Dank Gambs Lösung, die ich Hinzugefügt dieser if-Anweisung, um mein problem zu lösen.

if((i == shares.length -1)  && buyOrSell == 1 && (shares[i] >= average)) 
        {
            System.out.println("Sell" + shares[i]);
            buyOrSell--;
            System.out.println("Profit: " + (profit += shares[i]));
            break;

        }
  • Haben Sie diese in einem debugger zu beobachten, die Zeile, die fehlschlägt? Oder Lesen Sie sogar Ihre Ausnahme bestimmen Sie die Zeile, die fehlschlägt?
InformationsquelleAutor Calgar99 | 2013-03-11
Schreibe einen Kommentar