[Java] java.lang.StringIndexOutOfBoundsException

Pagina: 1
Acties:
  • 54 views sinds 30-01-2008

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ik krijg de volgende error code in mijn browser: Java.lang.StringIndexOutOfBoundsException

Dit is mn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;

public class ticker extends Applet {
String [] beursaandeel;
String [] beursnotering;
String [] beurspercentage;
String beurs2 = "Hier komen de beurzen enzo";
String beurs = "";
String stream = "";
String stream2 = "";
int x=500;
int x2=500;
beweegTicker ticker;
Image OSC; //Voor de dubbele buffer
int widthOfOSC, heightOfOSC; //Voor de dubbele buffer
Color rood, lichtgrijs, zwart;
Font font;
String URLinhoud="";
static final int maxbeurstemp=15;
int start = -4;
int test;

public void init(){
   setBackground(lichtgrijs);
fetchURL2("http://teletekst.nos.nl/cgi-bin/tt/nos/page/t/m/520-1");
   beurs = URLinhoud;
   stream2 = beurs2;
   beursaandeel = new String[maxbeurstemp];
   beursnotering = new String[maxbeurstemp];
   beurspercentage = new String[maxbeurstemp];

   for(int i = 0 ; i < maxbeurstemp ; i++){
   beursaandeel[i] = beurs.substring( start + 270 + 44*i , start + 282 + 44*i );
   beursnotering[i] = beurs.substring( start + 292 + 44*i , start + 298 + 44*i );
   beurspercentage[i] = beurs.substring( start + 301 + 44*i , start + 302 + 44*i );
   beurspercentage[i] = (beurspercentage[i] + beurs.substring( start + 303 + 44*i , start + 309 + 44*i ));
   stream += (beursaandeel[i] + beursnotering[i] + "    " + beurspercentage[i] + " | ");
   }

   ticker = new beweegTicker(this);
   ticker.start();
   rood = new Color(186,0,0);
   lichtgrijs = new Color(203,203,203);
   zwart = new Color(0,0,0);
   font = new Font("Courier",0,12);
}

public void paint(Graphics g){

g.setColor(zwart);
g.setFont(font);
g.drawString(stream,x,18);
g.drawString(stream2,x2,40);
g.setColor(rood);
g.drawRect(0,0,497,47);
g.drawRect(1,1,495,45);
g.drawRect(0,23,497,1);
}

public void update(Graphics g) { //de beroemde dubbele buffer
   if (OSC == null || widthOfOSC != getSize().width || heightOfOSC != getSize().height) {
     OSC = null;
     OSC = createImage(getSize().width, getSize().height);
     widthOfOSC = getSize().width;
     heightOfOSC = getSize().height;
   }
   Graphics OSG = OSC.getGraphics();
   OSG.setColor(getBackground());
   OSG.fillRect(0, 0, widthOfOSC, heightOfOSC);
   OSG.setColor(getForeground());
   OSG.setFont(getFont());
   paint(OSG);
   g.drawImage(OSC,0,0,this);
}

void fetchURL2(String urlString)
{
         try
         {
                 URL url = new URL(urlString);
                 InputStream content = (InputStream) url.getContent();
                 BufferedReader in = new BufferedReader(new InputStreamReader(content));
                 String line;
                 int i=0;

                 while ((line = in.readLine()) != null)
                 {
                   i++;
                   if (i==52){
                     URLinhoud += line;
                   }
                 }
         }
         catch (MalformedURLException e)
         {
                 System.out.println("Invalid URL");
         }
         catch (IOException e)
         {
                 System.out.println("Error reading URL");
         }
}

}





class beweegTicker extends Thread {
   Thread beweeg;
   ticker applet;

     public beweegTicker( ticker applet  ){
     this.applet = applet;

}

public void run() {
   while( true ) {
     applet.x-=5;
     applet.x2-=8;
     applet.repaint();
     if(applet.x < (applet.stream.length()*-7)){
       applet.x = 500;
     }
     if(applet.x2 < (applet.stream2.length()*-7)){
       applet.x2 = 500;
     }

     try {
     beweeg.sleep(100);
     }
     catch(InterruptedException e){}
   }
}
}

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
:) Ik verzoek je vriendelijk je post aan te vullen met de volgende punten: Welkom in P&W (FAQ-15/10/2002)

Even samenvatten:
1) Je hoeft niet al je code te posten
2) Debug eerst zelf even
3) Zet commentaar in je code
4) Geef aan wat fout gaat
5) Geef aan wat je zelf geprobeerd hebt :)

Ik wacht het af, want ik heb ook nog wel wat tips over je codingstyle :) en code

[ Voor 3% gewijzigd door Glimi op 28-11-2002 22:09 ]


  • wacco
  • Registratie: Augustus 2002
  • Laatst online: 21-03-2023

wacco

cli, hlt.

Glimi: je doet nou net alsof het een heel stom foutje is :) maar ik zie em niet een-twee-drie hoor. Wat het kan zijn (al zegt je array StringIndexOutblablabla) :
code:
1
2
OSG.fillRect(0, 0, widthOfOSC, heightOfOSC); //das eentje teveel! dus:
OSG.fillRect(0, 0, widthOfOSC -1, heightOfOSC -1);

maybe...

Spolap: Interactive webcomic


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
wacco schreef op 28 november 2002 @ 22:11:
Glimi: je doet nou net alsof het een heel stom foutje is :) maar ik zie em niet een-twee-drie hoor. Wat het kan zijn (al zegt je array StringIndexOutblablabla) :
code:
1
2
OSG.fillRect(0, 0, widthOfOSC, heightOfOSC); //das eentje teveel! dus:
OSG.fillRect(0, 0, widthOfOSC -1, heightOfOSC -1);

maybe...

Nee hoor, ik wil niet impliceren dat het simpel is. Gaat me er meer om dat een lap code, zonder commentaar neergeplemt wordt, met de melding dat het niet werkt.
Nergens een duidelijke regel waar en ook geen geïsoleerd stukje code waar men naar kan kijken, terwijl de TS weet waar het ongeveer zit dmv de stacktrace :)

Trouwens hoe ga je met een Image object een StringIndexOutOfBoundException krijgen?

  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
ALs ik een exceptoin opgeworpen krijg vermeldt hij altjid netjes een regelnummer. Kan je dus even aangeven waar precies het mis gaat?

Leeg


  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
wacco schreef op 28 November 2002 @ 22:11:
Glimi: je doet nou net alsof het een heel stom foutje is :) maar ik zie em niet een-twee-drie hoor. Wat het kan zijn (al zegt je array StringIndexOutblablabla) :
code:
1
2
OSG.fillRect(0, 0, widthOfOSC, heightOfOSC); //das eentje teveel! dus:
OSG.fillRect(0, 0, widthOfOSC -1, heightOfOSC -1);

maybe...
fillRect kent toch 4 parameters?
linker en rechterbovenhoek, lengte en breedte :?

Leeg


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Oja ff tussendoor: Al run ik m in JBuilder draait ie wel :S. Hij wil hem dus wel compilen maar niet runnen in mn browser.

[ Voor 35% gewijzigd door emkedouwe op 28-11-2002 22:35 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
reskobon schreef op 28 november 2002 @ 22:24:
fillRect kent toch 4 parameters?
linker en rechterbovenhoek, lengte en breedte :?

Ik zie ook 4 parameters ingevuld. Tevens zijn de parameters van Graphics.fillRect() in deze vorm fillRect( xLinkerBovenHoek, yLinkerBovenHoek, xLengte, yLengte )

  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
Glimi schreef op 28 November 2002 @ 22:28:

[...]

Ik zie ook 4 parameters ingevuld. Tevens zijn de parameters van Graphics.fillRect() in deze vorm fillRect( xLinkerBovenHoek, yLinkerBovenHoek, xLengte, yLengte )
Ik dacht dat
OSG.fillRect(0, 0, widthOfOSC, heightOfOSC); //das eentje teveel! dus:
betekende dat er een parameter te veel was maar dat bedoelde hij niet 8)7

Leeg


Verwijderd

Je krijgt geen IndexOutOfBoundsException maar een StringIndexOutOfBoundsException, dus zul je wel ergens een substring met een te hoge of lage char-positie gebruiken. Je kunt zelf vast wel vinden waar precies ;)

  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
Verwijderd schreef op 28 November 2002 @ 22:30:
Je krijgt geen IndexOutOfBoundsException maar een StringIndexOutOfBoundsException, dus zul je wel ergens een substring met een te hoge of lage char-positie gebruiken. Je kunt zelf vast wel vinden waar precies ;)
Ja maar de TS heeft blijkbaar niet veel haast met zijn probleem :?

Leeg


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Wat is een te hoge of te lage substring ? wat is de max ? Verder vraag ik me sterk af hoe het kan dat ie het in JBuilder wel doet en in Iexplorer niet

Ik krijg inderdaad een StringIndexOutOfBoundsException ;)

[ Voor 18% gewijzigd door emkedouwe op 28-11-2002 22:45 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
[nohtml]
emkedouwe schreef op 28 november 2002 @ 22:42:
Wat is een te hoge of te lage substring ?
Een string kun je zien als een array of characters. Als jij dus een negatief charpos opvraagt of een die groter is dan de lengte van de string, dan gaat dat niet werken
wat is de max ?
length -1
Verder vraag ik me sterk af hoe het kan dat ie het in JBuilder wel doet en in Iexplorer niet
Jbuilder eet de exception waarschijnlijk op, of vangt hem op en gooit een stacktrace naar je console.

Trouwens nogmaals dit verzoek [rml]Glimi in "[ Java] java.lang.StringIndexOutOfBoundsE"[/rml]

  • wacco
  • Registratie: Augustus 2002
  • Laatst online: 21-03-2023

wacco

cli, hlt.

Ik weet het... ik vond het ook al vaag dat er StringIndex... stond ipv Image-iets. Maar goed, problemen kunnen op de vaagste plekken ontstaan :)

Misschien kan het zijn dat bij initialisatie de ="" gewoon wordt geskipt? Dus dat het nog steeds een NULL object is? Maak er eens " " van, en kijk wat er gebeurd...

Spolap: Interactive webcomic


  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
wacco schreef op 28 November 2002 @ 23:02:
Ik weet het... ik vond het ook al vaag dat er StringIndex... stond ipv Image-iets. Maar goed, problemen kunnen op de vaagste plekken ontstaan :)

Misschien kan het zijn dat bij initialisatie de ="" gewoon wordt geskipt? Dus dat het nog steeds een NULL object is? Maak er eens " " van, en kijk wat er gebeurd...
Lijkt me niet dat dat het is, doe ik ook altijd namelijk :)

Leeg


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Java:
1
2
3
4
5
6
7
8
9
public class ticker extends Applet {
   String URLinhoud="";
   String beurs   ="";

   public void init( ) {
      beurs = URLinhoud;
      beursaandeel[i] = beurs.substring( start + 270 + 44*i , start + 282 + 44*i );
   }
}

Dit geef inderdaad een StringIndexOutOfBoundException :) Je bent nl. van een lege string minimaal het (271 - 4 )'ste indexed char op te vragen.
Misschien moet je even je de inhoud van de URL die je ophaalt ook nog even toekenennen aan URLinhoud :) (die weer wordt toegekend aan beurs :? )

[ Voor 18% gewijzigd door Glimi op 28-11-2002 23:19 ]


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Oke, het is nu duidelijk wat het probleem is; de string is leeg. En hoe komt dat. In de JAVA console krijg ik een andere message nml: accessdenied. Dus hij mag de url niet ophalen :? daarom is die leeg.

Maar hoe krijg ik die beveiligingserror er nu uit ????

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Sorry, maar deze thread gaat op slot. Ik zie nou niet echt initiatief van uw kant af komen om het op te zoeken. Neem bijv je laatste vraag:

Ik ga naar http://java.sun.com/ en klik op de search knop met argumenten 'Applet Security'
Eerste hit is dit:
http://java.sun.com/sfaq/ Staat genoeg informatie om je een dagje zoet te houden :)
Samengevat:
1) Applet laten serven op de host waar hij heen gaat connecten
2) Applet signen
3) De gebruiker zijn policy file laten aanpassen

In het vervolg dus het verzoek om eerst goed te zoeken en initiatief te tonen, voordat je een topic opent. Hieronder vallen dingen als fouten melden ( + regelnummer ) en zelf proberen te debuggen.

Verder is het misschien handig als je Welkom in P&W (FAQ-28/11/2002) nog even doorleest :)

Succes ermee.
Pagina: 1

Dit topic is gesloten.