Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] Scanner stop op lege regel

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

  • ralphje
  • Registratie: December 2004
  • Laatst online: 13:54

ralphje

Hey, it's me!

Topicstarter
Voor een opdracht moet ik leren werken met de Scanner. Dit heb ik ondertussen al:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;

public class Hallo {
    
    // Gegeven:
    public static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.print("Hoe heet je? ");
        while(in.hasNext()) {
            System.out.println("Hallo " + in.next());
            System.out.print("Hoe heet je? ");
        }
    }
}

Het werkt wel zoals het eerste deel van de opdracht zegt, namelijk:
Schrijf een klasse Hallo die:
* Op de standaardinvoer vraagt om een naam;
* De tekst "Hallo " gevolgd door de net ingevoerde naam op de standaarduitvoer print
* Dit herhaalt tot er geen invoer meer is of de ingevoerde naam een lege string is

Bovendien moet het programma correct werken als het aan wordt geroepen als java Hallo < namen.txt, waarbij namen.txt een tekstbestand met een aantal namen is.

Voorbeeld:
Hoe heet je? Piet
Hallo Piet!
Hoe heet je? Karel
Hallo Karel!
Hoe heet je?
Einde programma
Ik heb helaas geen idee hoe ik stop bij een lege string of als de input weg is, en hoe ik die inputfile parse.

Kan iemand mij een beetje op weg helpen? Veel van de Scanner hebben we nog niet gehad, maar dit schijnen we te moeten kunnen ...

[ Voor 0% gewijzigd door ralphje op 21-09-2007 00:54 . Reden: Een javablok ervan gemaakt ]

Geniet, maar surf met mate!


  • Denker
  • Registratie: Maart 2003
  • Laatst online: 10-11 14:13
Waarom zet je alles in de main en maak je niet een aparte method aan die alles afhandelt en die je instantieert in de main?

offtopic:
Lijkt erg veel op een opdracht voor P1, opleiding BIT aan de UT...?

  • ralphje
  • Registratie: December 2004
  • Laatst online: 13:54

ralphje

Hey, it's me!

Topicstarter
Uhm, ook goed :P. Maar het gaat dus een beetje om het idee en je helpt me ook niet echt op weg heh :P. Of het moet van invloed zijn op de rest van de uitvoering, maar dat lijkt mij op dit moment sterk.

offtopic:
INF :P, hoezo?

[ Voor 28% gewijzigd door ralphje op 21-09-2007 00:09 ]

Geniet, maar surf met mate!


Verwijderd

Nu weet ik dat het chaos was vanmiddag bij het aftekenen, maar toch raad ik je aan om niet hier om antwoorden/adviezen te gaan vragen ;) Ook studentassistenten en werkcollegedocenten lezen wel eens GoT.

Maar aangezien ik vanmiddag jouw assistent was, zal ik je nog wel verder helpen: in de opdracht staat o.a. dat je mag stoppen als er een lege regel gevonden wordt, hoelang zal een lege regel zijn?

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:29

Haan

dotnetter

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;

public class Hallo {
    
    public static Scanner in = new Scanner(System.in);

    public static void main(String[] args) 
    {
        System.out.println("Hoe heet je? ");
        String naam = in.nextLine();
        
        while(naam.length() != 0) 
        {
            System.out.println("Hallo " + naam);
            System.out.println("Hoe heet je? ");
            naam = in.nextLine();
         }
    }
}

Had dit net even geklust, voordat ik het commentaar van je begeleider zag :P Succes ermee ;)

Overigens zie ik totaal het probleem niet om op GoT advies te vragen over iets waar je zelf niet uitkomt. De TS heeft gewoon netjes aangegeven wat hij zelf heeft gedaan en waar hij op vastloopt, dat is een stuk beter dan mensen die alleen domweg een probleem dumpen en een kant-en-klaar antwoord verwachten.

[ Voor 21% gewijzigd door Haan op 21-09-2007 00:25 ]

Kater? Eerst water, de rest komt later


  • Daenney
  • Registratie: Januari 2005
  • Laatst online: 12-09-2016

Daenney

42

Ha die FizzGig, jij ook hier...
P1, damn, dat is lang geleden, lol :)

Het idee is meer dat mensen het zelf moeten uitvogelen en het anders aan een studentassistent moeten vragen. Nu riskeer je dat de TS'er jou code overneemt maar eigenlijk zelf niet geheel snapt wat er gebeurt wat later nadelen voor hem kan opleveren wanneer er verder wordt gewerkt met deze klasse.
De studentassistent zal zo iemand met behulp van hints en het opnieuw uitleggen van bepaalde concepten zelf tot het inzicht laten komen van hoe het moet worden opgelost wat uiteindelijk veel waardevoller is.
Verder is het gebruik van andermans code gedurende o.a het P1 vak zonder dit verder te vermelden (men moet zijn eigen code schrijven) plagiaat volgens de examencommissie aan de UT, wat voor de TS'er tot uitsluitsel van het vak kan leiden en een melding op zijn P/bachelordiploma dat hij zich hieraan schuldig heeft gemaakt. Nu weet ik dat FizzGig hier voor een keer niet moeilijk over zal doen maar toch...

[ Voor 104% gewijzigd door Daenney op 21-09-2007 00:37 ]


Verwijderd

Haan schreef op vrijdag 21 september 2007 @ 00:23:
...
Overigens zie ik totaal het probleem niet om op GoT advies te vragen over iets waar je zelf niet uitkomt. De TS heeft gewoon netjes aangegeven wat hij zelf heeft gedaan en waar hij op vastloopt, dat is een stuk beter dan mensen die alleen domweg een probleem dumpen en een kant-en-klaar antwoord verwachten.
Oh, ik vind het ook niet erg dat hij advies vraagt, ik vond het zelfs wel netjes geformuleerd, maar op GoT loop je ook het risico dat iemand gewoon het antwoord voorkauwt en dat is ook niet helemaal wat je wilt (of wij willen). Jij geeft hem nu al een stuk code, ik geef hem alleen een hint.

  • ralphje
  • Registratie: December 2004
  • Laatst online: 13:54

ralphje

Hey, it's me!

Topicstarter
Aah daarmee moet het me wel lukken ;).

offtopic:
En ik had ook wel verwacht dat er studentassistenten rondzwerven op GoT, maar damn hoe herken je mij... Mijn gebruikersnaam is zo verhullend :P... Ik vroeg niet voor niets voor een hint en niet voor het volledige antwoord (hoewel ik dat sowieso wel aardig af heb geleerd... ik ben ook ooit 12 geweest en ooit van een forum gebanned) :P. Volgende keer kies ik wel een rustiger forum uit en verbouw ik de vraag wel :P (Hey, ik heb de namen wel aangepast)


Edit:
Waah veel te druk hier. Volgende keer stuur ik wel een mailtje dan :P.
Nee, jullie hebben gelijk en uiteraard is het niet de bedoeling dat ik zeg van: Jongens, maak die opdracht even voor me, dan snap ik het wel en kan ik mijn practicum afsluiten. Overigens zou ik er zelf ook niet blij van worden als ik code heb die ik zelf niet eens snap, of nog erger: Bouwen op code die ik niet snap :P. Toch vind ik de System.in/Scanner nu nog wel een beetje vaag, ik kijk er morgen wel even goed naar.

(Btw, wie van de 10.000 mensen die langs het beeldscherm is gelopen ben jij nou eigenlijk :P )

[ Voor 37% gewijzigd door ralphje op 21-09-2007 00:46 ]

Geniet, maar surf met mate!


  • Daenney
  • Registratie: Januari 2005
  • Laatst online: 12-09-2016

Daenney

42

ralphje schreef op vrijdag 21 september 2007 @ 00:33:

offtopic:
Volgende keer kies ik wel een rustiger forum uit en verbouw ik de vraag wel :P (Hey, ik heb de namen wel aangepast)


Edit: Waah veel te druk hier. Volgende keer stuur ik wel een mailtje dan :P
Dat zou ik je toch afraden. Ik ken geen SA aan de UT die te beroerd is om even op een mailtje te antwoorden of je verder op weg helpen. Verder heb je meer aan de hulp van een SA want die stuurt je de goede richting op, zoals de UT het antwoord verwacht zeg maar.

verder staat er nog een fout in de code van Haan, zodat je dat al even weet, dat is een bijkomend risico van het vragen op fora

  • ralphje
  • Registratie: December 2004
  • Laatst online: 13:54

ralphje

Hey, it's me!

Topicstarter
Daenney schreef op vrijdag 21 september 2007 @ 00:46:
[...]

Dat zou ik je toch afraden.
Jaja was ook maar een flauwe opmerking :P.

(En sorry, ik ben traag met het editen van posts vandaag)

--
Verder is het gebruik van andermans code gedurende o.a het P1 vak zonder dit verder te vermelden (men moet zijn eigen code schrijven) plagiaat volgens de examencommissie aan de UT, wat voor de TS'er tot uitsluitsel van het vak kan leiden en een melding op zijn P/bachelordiploma dat hij zich hieraan schuldig heeft gemaakt. Nu weet ik dat FizzGig hier voor een keer niet moeilijk over zal doen maar toch...
Wow wat een gedoe om een simpel vraagje... Ik vroeg om advies, niet om gehele code, die ik toch niet kopieer of overneem en hooguit bekijk, denk: Ah okey, en verder ga met mijn eigen implementatie ;).
Maar door schade en schande, vooral het laatste zo te zien, word ik wijs, dus in vervolg mailtjes sturen d:)b

[ Voor 72% gewijzigd door ralphje op 21-09-2007 01:20 ]

Geniet, maar surf met mate!


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:29

Haan

dotnetter

Daenney schreef op vrijdag 21 september 2007 @ 00:46:
[...]

verder staat er nog een fout in de code van Haan, zodat je dat al even weet, dat is een bijkomend risico van het vragen op fora
Ik liet alleen een manier zien om de while-loop te verbreken, ik heb verder niet echt naar die opdracht of de rest van het programma gekeken ;)

Kater? Eerst water, de rest komt later


  • Daenney
  • Registratie: Januari 2005
  • Laatst online: 12-09-2016

Daenney

42

Haan schreef op vrijdag 21 september 2007 @ 00:52:
[...]

Ik liet alleen een manier zien om de while-loop te verbreken, ik heb verder niet echt naar die opdracht of de rest van het programma gekeken ;)
Dat weet ik, het was meer richting ralphje van: don't take it for granted
Verder zou ik even hier kijken http://java.sun.com/j2se/...pi/java/util/Scanner.html en dan eens even door de methodelijst heen spitten, hopen dat er dan een lampje gaat branden.

[ Voor 21% gewijzigd door Daenney op 21-09-2007 01:14 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op vrijdag 21 september 2007 @ 00:33:
[...]


Oh, ik vind het ook niet erg dat hij advies vraagt, ik vond het zelfs wel netjes geformuleerd, maar op GoT loop je ook het risico dat iemand gewoon het antwoord voorkauwt en dat is ook niet helemaal wat je wilt (of wij willen).
Dat risico loop je idd, maar het is in principe ook niet wat op GoT gewenst is. 't Is jammer dat er mensen meteen met een voorgekauwd antwoord komen af en toe. Hoe goed bedoeld ook, uiteindelijk leert niemand er wat van. :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ralphje
  • Registratie: December 2004
  • Laatst online: 13:54

ralphje

Hey, it's me!

Topicstarter
Als ik het goed begrijp, is het dus zo, in combinatie met System.in, dat de Scanner met hasNextLine/hasNext wacht op de invoer van de gebruiker indien deze niet voorhanden is?

In principe ging ik ervan uit dat hij System.in als string parsed en vervolgens alle invoer daarmee afhandelt, en dat System.in slechts eenmaal wacht op de invoer van de gebruiker (bij de aanroep ervan). (Misschien ben ik te veel PHP gewend)

Op te maken uit de uitvoering van de functie is dat dat dus niet gebeurt en System.in zelf de functie stopt* om te wachten op volgende invoer, wat de eindeloze loop verklaart. Indien hasNext false is, wacht hij dus tot er wél een hasNext is.

Heb ik het zo een beetje goed door?

* Okey het gaat natuurlijk niet helemaal zo. System.in is zelf een inputstream, dus System.in kan de functie zelf niet stoppen. Ik neem aan dat in werkelijkheid de Scanner zelf dat doet.

offtopic:
Noot aan de practicumassistenten die dit topic lezen en tot hier zijn gekomen: In tegenstelling tot wat er in de practicumhandleiding staat, staat er in mijn boek geen eigen klasse maar ook hier wordt gebruik gemaakt van de Scanner, zoals in het voorwoord vermeld staat: "Changes in the revised edition - java.util.Scanner is used for simple input in Chapter 7, replacing our local library class BasicFileReader"

[ Voor 35% gewijzigd door ralphje op 21-09-2007 01:52 ]

Geniet, maar surf met mate!


  • zonglew00
  • Registratie: Oktober 2006
  • Laatst online: 25-10 09:32
Tip...

Vooruit lezen... niet meteen alles uitvoeren
(Zit te hobbyen met Scanner)

  • Denker
  • Registratie: Maart 2003
  • Laatst online: 10-11 14:13
Verwijderd schreef op vrijdag 21 september 2007 @ 00:17:
Ook studentassistenten en werkcollegedocenten lezen wel eens GoT.
Hallo Bas, wist niet dat jij hier ook zat.
offtopic:
Volgens mij ben ik jou op het eindfeest tegengekomen. Ben van hetzelfde jaar als Erik H. (BIT), alleen doe nu een andere studie.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Nooit ergens vanuit gaan, altijd de docs lezen!

Do diamonds shine on the dark side of the moon :?


  • Daenney
  • Registratie: Januari 2005
  • Laatst online: 12-09-2016

Daenney

42

Denker schreef op vrijdag 21 september 2007 @ 08:53:

offtopic:
Volgens mij ben ik jou op het eindfeest tegengekomen. Ben van hetzelfde jaar als Erik H. (BIT), alleen doe nu een andere studie.
dat zou heel goed kunnen ja, ik was TEL generatie 6, nu even een andere studie

[ Voor 8% gewijzigd door Daenney op 21-09-2007 10:38 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:10

Creepy

Tactical Espionage Splatterer

Hmjaa.... slowchatten doen we maar ergens anders he ;)
Daarnaast melden in een topicstart dat je ergens geen idee van hebt en of iemand je dan maar opweg kan helpen is ook niet helemaal de bedoeling. Dat je voor school iets moet maken is niet erg maar in principe zou je vanuit school genoeg informatie moeten hebben om het zelf te maken dus in principe is het eigenlijk niet mogelijk dat je geen idee hebt of dat je zelf niks hebt kunnen vinden met google e.d. (en we gaan er hier vanuit dat je zelf wat zaken in eerste instanstie probeert en zelf gaat zoeken). Zie ook Programming Beleid en dan met name Programming Beleid - De Quickstart

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.