Toon posts:

[Java] M.b.v. Scanner een String printen

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

Verwijderd

Topicstarter
Stel je hebt een bepaalde input: "voornaam achternaam" en die wil je inlezen met behulp van een scanner object en vervolgens printen.

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
import java.io.PrintStream;
import java.util.Scanner;

class F_Proefwerk {
    
    String voornaam,
          achternaam,
          totaal;
    
    Scanner     in;
    PrintStream out;
    
    F_Proefwerk () {
        in = new Scanner(System.in);
        out = new PrintStream(System.out);
    }
    
    String printNaam(Scanner input){
        voornaam = new Scanner(input.next());
        achternaam = new Scanner(input.next());
        
        totaal = voornaam + achternaam;
        
        return totaal;
    }
    
    public void start(){
            
        while(in.hasNextLine()) {
            Scanner regelScanner = new Scanner(in.next());
            
            printNaam(regelScanner);
            
            out.printf("%s \n", totaal);
        }
        
    }

    public static void main (String argv[]){
        new F_Proefwerk().start();
    }
}

Dit mag niet, want 'cannot convert Scanner to String'.. Alleen ik heb geen idee hoe ik dat op zou moeten lossen.

Alvast bedankt.

Verwijderd

Kijk hier eens:

http://java.sun.com/j2se/...pi/java/util/Scanner.html

Waarom geef je een Scanner mee als var en maak je een nieuwe scanner aan :?

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 28 oktober 2006 @ 15:30:
Kijk hier eens:

http://java.sun.com/j2se/...pi/java/util/Scanner.html

Waarom geef je een Scanner mee als var en maak je een nieuwe scanner aan :?
Daar heb ik al gekeken, maar ik word ik niet veel wijzer van eerlijk gezegd..

Later wil ik er nog meer mee doen. De input bestaat namelijk niet alleen uit een voornaam en achternaam, maar ook uit een reeks cijfers. Dan is het overzichtelijker om het zo te doen, ofzo. Echter, om het eenvoudig te houden wil ik eerst die naam geprint hebben.

[ Voor 5% gewijzigd door Verwijderd op 28-10-2006 15:33 ]


Verwijderd

Je maakt voornaam ook een nieuwe scanner...

Doe dit eens:

Java:
1
2
3
4
5
6
7
8
String printNaam(Scanner input){
        voornaam = input.next();
        achternaam = input.next();
        
        totaal = voornaam + achternaam;
        
        return totaal;
    }

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Als de invoer "voornaam<whitespace>achternaam" is en je stopt die string in een Scanner, dan zal de eerste aanroep van input.next() de voornaam opleveren en de tweede de achternaam. Jij levert allereerst nergens input aan de Scanner en stopt vervolgens de output van de Scanner opnieuw in een Scanner. Misschien moet je eerst even uitschrijven wat je wilt doen en daarna pas code gaan schrijven.

Wie trösten wir uns, die Mörder aller Mörder?


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:42
Java:
18
19
20
21
22
23
24
25
String printNaam(Scanner input){
        voornaam = new Scanner(input.next());
        achternaam = new Scanner(input.next());
        
        totaal = voornaam + achternaam;
        
        return totaal;
}


Op regel 18 en 19 probeer jij een String te initialiseren alszijnde Scanner.
Aangezien String geen superclass is van Scanner gaat dat niet lukken.

[ Voor 0% gewijzigd door Kwistnix op 28-10-2006 15:40 . Reden: Spuit 349329832 ]


Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 28 oktober 2006 @ 15:37:
Je maakt voornaam ook een nieuwe scanner...

Doe dit eens:

Java:
1
2
3
4
5
6
7
8
String printNaam(Scanner input){
        voornaam = input.next();
        achternaam = input.next();
        
        totaal = voornaam + achternaam;
        
        return totaal;
    }
Hm, dat ziet er inderdaad al een stuk beter uit. Echter, het werkt nog steeds niet: Exception in thread "main" java.util.NoSuchElementException

[ Voor 5% gewijzigd door Verwijderd op 28-10-2006 15:56 ]


Verwijderd

Topicstarter
Confusion schreef op zaterdag 28 oktober 2006 @ 15:37:
Als de invoer "voornaam<whitespace>achternaam" is en je stopt die string in een Scanner, dan zal de eerste aanroep van input.next() de voornaam opleveren en de tweede de achternaam. Jij levert allereerst nergens input aan de Scanner en stopt vervolgens de output van de Scanner opnieuw in een Scanner. Misschien moet je eerst even uitschrijven wat je wilt doen en daarna pas code gaan schrijven.
De input geef ik door via de console, dus dat is niet het probleem. Dat van die output in een nieuwe scanner stoppen was inderdaad fout.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Waar haal je dan input van de console? Als jij zinnen in je console gaan tikken, worden die (but correct me if I'm wrong) niet op automagische wijze in de Scanner gestopt omdat je System.in als inputbron hebt gezet.

Het verklaart ook die NoSuchElementException: die krijg je als je next() aanroept op een Scanner die geen volgende element heeft.

Het lijkt me een goed idee als je die link van Boland leest; de javadocs bevatten over het algemeen goede voorbeelden.

[ Voor 39% gewijzigd door Confusion op 28-10-2006 16:01 ]

Wie trösten wir uns, die Mörder aller Mörder?


Verwijderd

Topicstarter
Confusion schreef op zaterdag 28 oktober 2006 @ 15:58:
Waar haal je dan input van de console? Als jij zinnen in je console gaan tikken, worden die (but correct me if I'm wrong) niet op automagische wijze in de Scanner gestopt omdat je System.in als inputbron hebt gezet.

Het verklaart ook die NoSuchElementException: die krijg je als je next() aanroept op een Scanner die geen volgende element heeft.
Als ik me niet sterk vergis zou dat wel gewoon moeten werken.. Enig idee hoe ik dat zou kunnen oplossen?

Verwijderd

Verwijderd schreef op zaterdag 28 oktober 2006 @ 16:01:
[...]


Als ik me niet sterk vergis zou dat wel gewoon moeten werken.. Enig idee hoe ik dat zou kunnen oplossen?
Zoals Confusion ook al zegt, lees die javadocs even goed door. Het is echt geen hoogstaande taal, echt wel te begrijpen als je het even goed leest. Geen zin om alles voor te gaan kauwen...

Weet je echt zeker dat dat kan? Heb je dit ergens gehoord; dus waarom denk je dat het wel kan?

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 28 oktober 2006 @ 16:12:
[...]

Zoals Confusion ook al zegt, lees die javadocs even goed door. Het is echt geen hoogstaande taal, echt wel te begrijpen als je het even goed leest. Geen zin om alles voor te gaan kauwen...

Weet je echt zeker dat dat kan? Heb je dit ergens gehoord; dus waarom denk je dat het wel kan?
Ha! Het werkt. :)

Het probleem was dat ik had staan Scanner regelScanner = new Scanner(in.next()); en dat moest in.nextLine zijn natuurlijk.

Dat van die console heb ik zo geleerd en werkt ook prima. :)
Pagina: 1