[JAVA] indexOf vind ")" niet

Pagina: 1
Acties:

  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Ik moet voor school voor een keuzevak genaamd Visueel Programmeren in Java een applet maken waarin oa een substring uitgelicht moet worden.

Deze substring begint met een "(" en eindigt op een ")". De "(" kan ik er wel uitlichten dmv indexOf, maar ")" pakt ie niet. Hij geeft aan dat de ")" als index -1 heeft, wat weer allerlei nare foutmeldingen tot gevolg heeft.

Voorbeeld van een string, het vetgedrukte moet eruit gelicht worden:
((2*4)+((((25%7)+3)*12))

.....


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Waneer de functie een -1 teruggeeft betekend het dat er geen ) meer in de string zit. Weet je zeker dat die ) er nog wel in staat en dat je deze niet perongeluk verwijderd hebt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Fout staat op regel 25? :?

  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 13:48 schreef Janoz het volgende:
Waneer de functie een -1 teruggeeft betekend het dat er geen ) meer in de string zit. Weet je zeker dat die ) er nog wel in staat en dat je deze niet perongeluk verwijderd hebt?
Ik weet zeker dat er een ) in staat, das nou net het probleem!

.....


  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 13:49 schreef Arien het volgende:
Fout staat op regel 25? :?
??? Hoe kom je daarbij?

.....


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Hij zal wel bedoelen dat het handig zou zijn om wat code te zien .. sluit me daar trouwens zelf wel bij aan.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 28 maart 2002 13:49 schreef Arien het volgende:
Fout staat op regel 25? :?
Wat moet dat betekenen? :)
Het is laat bij jou, maar verder? ;)

Sabelhout, gebruik je dezelfde string voor de ( als voor de ) controle?

  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 13:51 schreef ACM het volgende:

[..]

Wat moet dat betekenen? :)
Het is laat bij jou, maar verder? ;)

Sabelhout, gebruik je dezelfde string voor de ( als voor de ) controle?
Dit is mijn code:

int vervanging=0;
int iSluithaak=expr.indexOf(')');
int iOpenhaak=expr.lastIndexOf('(');


subExpressie=expr.substring(iOpenhaak+1,iSluithaak);

.....


  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Ik weet niet precies wat je bedoeld (kan ik dus niet helpen), maar je hebt iig meer haakjes open "(" dan haakjes sluiten ")" in je string...

((2*4)+((((25%7)+3)*12))

6 open en 5 dicht misschien helpt dit wat?

Dyslexie | Linux | MoZilla | OpenOffice


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Als je zo een expressie wilt evalueren kun je waarschijnlijk beter een stackbased oplossing gebruiken :)

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Werkt gewoon hoor :?
code:
1
2
3
4
5
6
7
8
9
class Temp
{
  public static void main (String [] args)
  {
    String lala = args[0];
    System.out.println("" + lala.indexOf(')'));
    System.out.println("" + lala.indexOf('('));
  }
}

  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 13:59 schreef Birk het volgende:
Ik weet niet precies wat je bedoeld (kan ik dus niet helpen), maar je hebt iig meer haakjes open "(" dan haakjes sluiten ")" in je string...

((2*4)+((((25%7)+3)*12))

6 open en 5 dicht misschien helpt dit wat?
Die klopt idd niet....maar als ik bijvoorbeeld ((2+3)*6) doe, dan krijg ik als substring (2+3)*6, terwijl het (2+3) zou moeten zijn.

.....


  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op donderdag 28 maart 2002 14:01 schreef Sabelhout het volgende:

[..]

Die klopt idd niet....maar als ik bijvoorbeeld ((2+3)*6) doe, dan krijg ik als substring (2+3)*6, terwijl het (2+3) zou moeten zijn.
ehm dan kan je toch gewoon een algoritme schrijven die zoekt welk haakje de eerste moet zijn en dan bij de volgende stopt? of snap ik je probleem dan niet helemaal?

Dyslexie | Linux | MoZilla | OpenOffice


Verwijderd

Sabelhout: ??? Hoe kom je daarbij?
Was een gokje. :P Ik zag namelijk geen code en zoals je ziet gok ik erg beroerd. Excuus daarvoor. :)
ACM: Wat moet dat betekenen? :)
Het is laat bij jou, maar verder? ;)
Was een verzoek om code. Een script-request zogezegd. :+
Het is inderdaad laat.... :Z

</excuses voor="overlast">

  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 14:04 schreef Birk het volgende:

[..]

ehm dan kan je toch gewoon een algoritme schrijven die zoekt welk haakje de eerste moet zijn en dan bij de volgende stopt? of snap ik je probleem dan niet helemaal?
Maar als ie ( pakt, moet ie ) toch ook kunnen pakken?

.....


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 28 maart 2002 14:06 schreef Arien het volgende:
Was een verzoek om code. Een script-request zogezegd. :+
Het is inderdaad laat.... :Z
Nah, don't mention

[beetje blaterig gesteld]
Ik was niet wakker genoeg om de diepte van je vraag te doorzien. :)
[beetje blaterig gesteld]

Verwijderd

Sabelhout: Als ik bijvoorbeeld ((2+3)*6) doe, dan krijg ik als substring (2+3)*6, terwijl het (2+3) zou moeten zijn.
Bij elkaar horende haakjes hebben een even diepe nesting, dus tel (en zet bv in een array) welk nummer openingshaak welke positie heeft en welke sluithaak daarbij hoort.

Voor de binnenste haken (van links de eerste nesting) zoek je dus net zolang naar openingshaken tot je een sluithaak tegenkomt, die dan bij de laatste openingshaak hoort.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op donderdag 28 maart 2002 14:01 schreef Sabelhout het volgende:

[..]

Die klopt idd niet....maar als ik bijvoorbeeld ((2+3)*6) doe, dan krijg ik als substring (2+3)*6, terwijl het (2+3) zou moeten zijn.
Mwah... ik denk dat je toch nog ff iets harder na moet gaan denken hoor. Als jij gewoon de posities van de ( en de ) opvraagt, krijg je als substring "(2+3" (Hij zoekt namelijk het eerst voorkomende teken, houd geen enkele rekening met genestheid) Als je deze string vervolgens gaat evalueren krijg je idd een error, omdat hier gewoon geen ) meer in staat!!!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

...en waarom gebruik je lastIndexOf ipv indexOf?


Journalism is printing what someone else does not want printed; everything else is public relations.


  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op donderdag 28 maart 2002 14:07 schreef Sabelhout het volgende:

[..]

Maar als ie ( pakt, moet ie ) toch ook kunnen pakken?
Ja en dat snap ik eff nie...

Voorbeeld, een procedure waar je ingeeft vanaf welk haakje je eruit wilt halen. B.v. de 2de...

dan ga je naar het tweede haakje gooit alle chars in een nieuwe string vanaf dat haakje t/m het volgende haakje...

((2*4)+((((25%7)+3)*12))

edit:

kan ook genest, tel open haakjes vanaf begin haakje en tel terug bij haakjes sluiten, stoppen als counter = 0

Dyslexie | Linux | MoZilla | OpenOffice


  • Sabelhout
  • Registratie: Januari 2001
  • Laatst online: 09-09 11:56
Op donderdag 28 maart 2002 14:10 schreef Janoz het volgende:

[..]

Mwah... ik denk dat je toch nog ff iets harder na moet gaan denken hoor. Als jij gewoon de posities van de ( en de ) opvraagt, krijg je als substring "(2+3" (Hij zoekt namelijk het eerst voorkomende teken, houd geen enkele rekening met genestheid) Als je deze string vervolgens gaat evalueren krijg je idd een error, omdat hier gewoon geen ) meer in staat!!!
Hier had ik wat aan......thnx man!

.....


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

* ACM heeft de 4 overbodige reacties even weggehaald :)
Pagina: 1