[JAVA] Enter-teken converteren naar Char?

Pagina: 1
Acties:
  • 241 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
Ben bezig met een tekst-compressie programma, maar ik vraag me nu ineens af hoe ik in godsnaam een enter-teken kan converteren. Ik maak namelijk eerste en tabel met alle karakters die gebruikt worden, met daarin het 'gewicht', dus hoe vaak een karakter in de tekst voorkomt.
Alleen nu zat ik ineens te denken hoe ik een enter-teken mee kan nemen. Of moet ik per regel gaan converteren?

alvast bedankt voor de hulp

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 19-05 13:58

drm

f0pc0dert

Waarom zou een enter-teken verschillen van ieder ander karakter in de te comprimeren tekenreeks? Je kan die toch ook gewoon een plaatsje geven in je compressieboom?

laat anders een stukje code zien

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Enter is ook een teken. In Java worden de enters op een platform afhankelijke manier behandelt. Op de meeste platforms is het alleen '\n'. Op windows zijn het twee charretjes achter elkaar. Als ik het goed heb is dit '\r' '\n'.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 19-05 13:58

drm

f0pc0dert

Don't be satisfied if you can remember last night. Choose the right glass.... Refuse to accept short measures... Drink it all.... Expect to get drunk.... Then start again.
hmmm, volgens mij moet ik jou niet tegenkomen op een chagrijnige zondagavond ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Wezzie
  • Registratie: Maart 2001
  • Laatst online: 31-05 09:32
Probeers er achter tekomen wat de virtualkey is van de enter toets onder java. Ik dacht 80 ofzo.

Daarna kun je em zonder problemen omzetten.

Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
Op donderdag 07 juni 2001 13:26 schreef drm het volgende:

[..]

hmmm, volgens mij moet ik jou niet tegenkomen op een chagrijnige zondagavond ;)
>:) valt mee hoor ;)
Op donderdag 07 juni 2001 13:25 schreef mbravenboer het volgende:
Enter is ook een teken. In Java worden de enters op een platform afhankelijke manier behandelt. Op de meeste platforms is het alleen '\n'. Op windows zijn het twee charretjes achter elkaar. Als ik het goed heb is dit '\r' '\n'.
precies ja, daar zit ik dus een beetje mee. Begrijp hierdoor niet goed hoe ik dit op kan lossen. kan ik dan wel een \n (was 't trouwens niet /n?) in één Char proppen? Want ik wil de enter-teken ook in de expressieboom hangen.
Ik werk trouwens met de huffman-code.
Kan later wel eens wat code neerknallen, het stelt nu namelijk nog niet veel voor. Ben namelijk net begonnen. Heb net het stukje code klaar waarmee ik een string kan uitpluizen in karakters, en elk verschillende karakter heb ik in een node gepropt met het 'gewicht' zeg maar.

Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
Op donderdag 07 juni 2001 13:33 schreef Wezzie het volgende:
Probeers er achter tekomen wat de virtualkey is van de enter toets onder java. Ik dacht 80 ofzo.

Daarna kun je em zonder problemen omzetten.
wat bedoel je met virtualkey? is dat gewoon de ascii-waarde ofzo?

Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Op donderdag 07 juni 2001 13:36 schreef BoKToR het volgende:
precies ja, daar zit ik dus een beetje mee. Begrijp hierdoor niet goed hoe ik dit op kan lossen. kan ik dan wel een \n (was 't trouwens niet /n?) in één Char proppen? Want ik wil de enter-teken ook in de expressieboom hangen.
\n is 1 char hoe verwarrend dit ook mag zijn :) . char newline = '\n'; is dus correcte java code.
Ik werk trouwens met de huffman-code.
Grappig, laat maar eens horen hoe het afloopt.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 29-04 23:48

dusty

Y! Celebrate Life!

chr(10) => \r
chr(13) => \n

(of was het nou andersom :+).. neuh.. dit zou de goede volgorde moeten zijn.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 19-05 13:58

drm

f0pc0dert

Volgens mij heeft in Java sowieso iedere character een 16bits waarde, dus een '\r' en '\n' byte naast elkaar vormen een 16-bits Character. Is een beetje verwarrend maar daar zou je de doc's van java even op na moeten slaan.

Derhalve betekent het dat een Enter ook in 1 character past.

Dat is ook een van de vervelende verschilletjes tussen Java en C(++)

Ik denk dus, dat je er eerst achter moet zien te komen of je de compressie af wil laten hangen van 16bits characters of 8bits. Dat is nogal een verschil, lijkt me.

Ik neem aan dat je ook al eens met toetsenbord invoer heb zitten klooien? Dan is het vaak ook zo dat je de Enter-aanslag van de Standard Input (stdin) wil "skippen" door skip ( 2 ); te gebruiken. Dat zijn dus ook die 2 '\r' en '\n' bytes.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 29-04 23:48

dusty

Y! Celebrate Life!

Op donderdag 07 juni 2001 14:23 schreef drm het volgende:
Ik neem aan dat je ook al eens met toetsenbord invoer heb zitten klooien? Dan is het vaak ook zo dat je de Enter-aanslag van de Standard Input (stdin) wil "skippen" door skip ( 2 ); te gebruiken. Dat zijn dus ook die 2 '\r' en '\n' bytes.
Als ik een textfile comprimeer wil ik normaliter als ik het decomprimeer weer dezelfde layout hebben. En niet alles op een regel.

(btw. Denk aan de TAB! en de ç en de ï en de û etc.. etc.. toets.)

dus je zult alle karakters moeten nemen die voorkomen in de text. (dus misschien toch maar kijken naar de ord() waarde. ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
worden, met daarin het 'gewicht', dus hoe vaak een karakter in de tekst voorkomt
noem het maar "frequentie", ik denk dat dat veel duidelijker klinkt.

BTW: Huffman is wel een cool algorithme. Wel wat simpel... als je Huffman gehad heb moet je LZW ook eens proberen.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Nog even voor de duidelijk:

'\n' is is gewoon 1 acht bits teken met ik dacht waarde 13 (decimaal).

'\n' is wanneer je file-functies enzovoort gebruikt gelijk aan twee tekens (\r \n).

Dit geldt in C tenminste, of dat in java zo is weet ik niet.

Ik weet wel dat een "enter" onder unix-like omgevingen maar een teken zijn (de \n).

\r [cariage return] dec(10)
\n [line feed] dec(13)

of was dit nu precies andersom 10/13???.

anyway, als je data opvraagt dan maakt dat volgens mij niet uit, die enter, want de meeste functies geven precies aan hoeveel bytes ingelezen worden.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

  • Wezzie
  • Registratie: Maart 2001
  • Laatst online: 31-05 09:32
Java maakt gebruik van UNICODE inplaats van ASCII. Daarom heeft elk character een unicode om zich te indentificeren aan het systeem.

Deze kun je namelijk gewoon uitlezen. Daarna converteren en opslaan voor gebruik.

BTW /n of /r is volgens mij gewoon C en c++ tui. Java kent geen /0 terminated strings.

Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Vinden jullie het erg als ik niet snap wat er nu eigenlijk zo moeilijk is? ;)

Als je de frequentie (is inderdaad betere term) van elk karakter wilt bekijken, kan je dat gewoon heel eenvoudig doen. De enter is helemaal geen bijzonder geval. Voor hetzelfde geld was de 'a' een scheidingsteken :) .

Kortom: niet moeilijk doen met bits, bytes \r enz enz... alles is gewoon een char.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Om het trouwens dan toch maar even duidelijk te krijgen:

* \n is het scheidingsteken van Unix (files of tekst op het scherm maakt geen verschil).

* \r\n zijn de twee scheidingstekens van Windows.

Java gebruikt het scheidingsteken van het platform waarop er nu wordt gedraaid, maar het kan ook met de andere variant omgaan. Ik gebruik zelf dan ook altijd alleen \n. Dat is veel makkelijker:) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • Wezzie
  • Registratie: Maart 2001
  • Laatst online: 31-05 09:32
De Virtual Key code is UNICODE.

Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
UNICODE heb je toch ook voor C? dat zijn dan toch de "wide-character" versies van de functies?

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
bedankt voor de hulp allemaal. Ik kan nu in ieder geval de return meenemen in de coderingsboom.

Nu komt het leuke: de nodes moeten gesorteerd worden :)

quicksort? bubblesort? zal wel ff kijken welke een beetje te doen is :)

Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Quicksort is vrij makkelijk te implementeren. Ik vind een implementatie waarbij de items in drie delen worden verdeeld ( < = > ) altijd een stuk duidelijker.

Overigens kan je wellicht ook gebruik maken van Collections.sort(...).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
heb de quicksort routine al gevonden in m'n grote java-bijbel :)

zal eens uitzoeken hoe ik dat kan implementeren....

Acties:
  • 0 Henk 'm!

Anoniem: 22890

Op donderdag 07 juni 2001 23:04 schreef BoKToR het volgende:
heb de quicksort routine al gevonden in m'n grote java-bijbel :)

zal eens uitzoeken hoe ik dat kan implementeren....
Daar is een standaard java-functie voor!

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 19-05 13:58

drm

f0pc0dert

dusty zei:
Als ik een textfile comprimeer wil ik normaliter als ik het decomprimeer weer dezelfde layout hebben. En niet alles op een regel.
Ik bedoelde dat alleen maar ter ondersteuning van mijn verhaal dat chars 16 bits zijn in Java. Niet dat je newline en cr-bytes moet gaan skippen ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:01
Op donderdag 07 juni 2001 23:05 schreef joska het volgende:

[..]

Daar is een standaard java-functie voor!
O? hoe heet die functie dan? Dacht altijd dat je de sorteeralgoritmen zelf in elkaar moest flanzen :?

Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Op donderdag 07 juni 2001 23:05 schreef joska het volgende:
Daar is een standaard java-functie voor!
Volgens mij gebruikt die mergesort en geen quicksort :P .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Op donderdag 07 juni 2001 19:59 schreef mbravenboer het volgende:
Overigens kan je wellicht ook gebruik maken van Collections.sort(...).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1