[JAVA] String wordt afgebroken na spatie

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

  • Quibus
  • Registratie: November 2000
  • Laatst online: 21-05 08:58
Hallo iedereen,
Ik moet voor school een java cursus volgen. Ik heb nu echter een probleem dat ik niet snap. Het is waarschijnlijk een heel makkelijk probleem, maar ik kom er niet uit.
Ik moet een programma'tje schrijven waarbij ik een String input vraag van de gebruiker. Deze typt bijvoorbeeld "Hallo GoT" in. Deze string moet dan vervormd worden naar "> H a l l o G o T <". Lekker nuttig programma maarja je moet het toch leren. Nu is dit mijn code.

[edit]
ik heb php tags erom gezet voor de code highlighting...
PHP:
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
import element.*;

public class PageHeadLines
{
    public static String headline(String text)
    //pre: text is not a null String
    //post: result is text, with a space between original characters
    {
        String result = ""; //result might be empty
        int i;              // index of the character
        
        for(i=0; i < text.length(); i++)
        {
            //collects characters of text, but followed by a space
            result = result + text.charAt(i) + ' ';
        }  
        return result;
        
    }
    public static void main(String args[])
    {
        //Define the variables
        ConsoleWindow c = new ConsoleWindow();
        String userinput;
        
        //Ask user to input a string
        c.out.println("Please enter a text to convert to headline");
        userinput = c.input.readString();
        
        //output user input to the user
        c.out.println(">"+headline(userinput)+"<");
    }
}


Zoals je in de eerste regel kunt zien maak ik gebruik van een package genaamt Element. Dit package wordt geleverd bij mijn Java boek (http://www.cs.williams.edu/%7Ebailey/JavaElements/). Het probleem is echter als ik bovenstaande string wil "parsen" geeft hij "> H a l l o <" in plaats van "Hallo Got". Hij wordt op een of andere manier af gebroken bij de spatie.. maar ik weet niet waarom. ER lijkt iets mis te gaan met de input, maar hoe dat zit... Quotes om "userinput" in regel 33 van mijn proggie werkt natuurlijk ook niet. Mijn method gaat dan "userinput" parsen naar een headline. Kunnen jullie mij helpen?
Alvast bedankt.

[ Voor 14% gewijzigd door Quibus op 13-05-2004 22:50 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Ik heb dit probleem eerder gezien. Zelf niet geprobeerd, maar volgens mij kan je spelen met readln() (welke tot het einde van de regel leest) en readLine(), welke niet zelf de stream leest maar wel wat hij nog moet lezen in deze regel terug geeft.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

code:
1
2
3
c.out.println("Please enter a text to convert to headline");
userinput = c.input.readString();
System.out.println(userinput); //extra debug string


Print die userinput eens.

[ Voor 22% gewijzigd door Alarmnummer op 13-05-2004 23:01 ]


  • Quibus
  • Registratie: November 2000
  • Laatst online: 21-05 08:58
Alarmnummer schreef op 13 mei 2004 @ 23:01:
code:
1
2
3
c.out.println("Please enter a text to convert to headline");
userinput = c.input.readString();
System.out.println(userinput); //extra debug string


Print die userinput eens.
Als ik dat probeer en ik doe als input: Java is cool
krijg ik: Java

Er gaat dus duidelijk iets mis met het inlezen van de string.

@ Macros:
Ik heb het nu naar Read.Line() Geprobeerd en het werkt prima. Er ging op een of andere manier iets fout de eerste keer toen ik het proggie probeerde te compilen maar nu werkt t perfect. En de string wordt ook op de goede manier geprint.
Dankjullie wel allemaal voor de snelle hulp _/-\o_ Ik ga weer verder programmren :)

Verwijderd

De klasse ConsoleWindow zit in het package element. Op een instantie van deze klasse roep je op het field input de methode readString() aan. In de documentatie van de klasse ConsoleWindow zie je dat het field input van het type ReadStream is uit het package structure.
Het package structure staat ook gedocumenteerd op de website van Bailey:
http://www.cs.williams.ed...structure/ReadStream.html

Hier staat het volgende over de methode readString() geschreven:
readString

public String readString()
....Skip white space and read in the next non-whitespace word as a string.
Postcondition:
....reads next word as a string
Returns:
....The next word on the input.
Als je de documentatie van de klasse ReadStream verder bekijkt zie je, zoals Macros zegt, de methode readln() en readLine() staan.

Het belangrijkste lesje dat je hier moet leren is niet dat je readLine() in plaats van readString() moet gebruiken, maar hoe je zelf achterhaalt wat een methode doet volgens de documentatie en hoe je de methode vindt die je nodig hebt.

  • Quibus
  • Registratie: November 2000
  • Laatst online: 21-05 08:58
Daar heb je wel gelijk in. Ik ben echter net begonnen met Java en ik vind het vaak nog moeilijk om de goeie informatie op internet te vinden. Verder vind ik het ook moeilijk om te kijken waarnaar ik meot zoeken. Aangezien ik vaak niet weet onder welke class ik het zou moeten zoeken ed.

IIG bedankt voor de hulp en ik zal de volgende keer de site van JavaElements and java.sun.com beter doorsnuffelen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 00:01

Janoz

Moderator Devschuur®

!litemod

Quibus schreef op 13 mei 2004 @ 23:22:
Daar heb je wel gelijk in. Ik ben echter net begonnen met Java en ik vind het vaak nog moeilijk om de goeie informatie op internet te vinden.
Juist daarom is het erg goed om te oefenen met de api documentatie. Java heeft door het gebruik van javadoc een erg uniforme documentatie. Hierdoor ziet de oficiele api documentatie van java er bijvoorbeeld bijna hetzelfde uit als die van een third party library leverancier. Belangrijk iig is om http://java.sun.com/j2se/1.4.2/docs/api/ deze in je boekmarks te zetten, maar ook de API die bij het package van het boek hoort.

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

Pagina: 1