[Java] Palindroom

Pagina: 1
Acties:

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
Beste tweakers,

Voor een opdrachtje is het de bedoeling dat ik een programma in java schrijft die controleert, of een woord een palindroom is.
Schrijf een methode die bepaald of een String een palindroom is. Een palindroom is een woord dat wanneer je dat van achter naar voren leest hetzelfde oplevert als wanneer je het van voren naar achter leest. Voorbeelden van palindromen zijn: kaak, lepel, racecar. Bedenk zelf de signature van de methode. Kijk goed in de API van de klasse String welke methode je kan gebruiken om je bij deze opgave te helpen
Test je methode door deze aan te roepen vanuit de main methode

Je moet zoals ik het begrijp 2 methodes hebben. Een main en een andere.

Echter kom ik niet verder dan dit:

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

public class Opdrachtzes {
    public static void main(String[] args)
    {
        Scanner woord = new Scanner(System.in);
        System.out.println("Geef het woord: ");
        String w = woord.next();
        
        
    }
    
    public static string  


Zou iemand mij verder kunnen helpen? Ik ben namelijk beginnend in Java/programmeren.

[ Voor 0% gewijzigd door RobIII op 19-09-2013 20:14 . Reden: Code tags toegevoegd ]


  • Xudonax
  • Registratie: November 2010
  • Laatst online: 08-05 13:52
Sowieso raad ik je aan om code tags te gebruiken voor je code, dat maakt het wat overzichtelijker en zorgt ervoor dat spaties e.d. behouden blijven. Daarnaast is de 2e methode eigenlijk heel simpel, je geeft zelf het antwoord al. Een woord is een palindroom als je het zowel van voor naar achter als van achter naar voren leest. Dus heel simpel gesteld zou je de "lijst" met tekens (aka je string) moeten omdraaien als ik je opdracht goed lees. Hoe je dit doet is verder aan jou :)

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
Ik snap alleen de laatste zin van de opdracht niet. Namelijk: Test je methode door deze aan te roepen vanuit de main methode Bedenk zelf de signature van de methode

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Dan wat? Ik zie niet eens een poging tot...? Ik zie je alleen een string lezen van de input en daarna... niets. Ik neem aan dat je toch wel enigszins iets geprobeerd hebt? Zo ja: wat dan? Laat eens zien hoe ver je kwam, wat je gedachtengang is, desnoods schrijf je in pseudocode/nederlands eens uit hoe je zoiets zou (denken te) aanpakken. Daar kunnen we je mee helpen en input/feedback op geven; nu is het niet veel meer dan een "kan iemand m'n huiswerk even (half) afmaken voor me".
champion16 schreef op donderdag 19 september 2013 @ 20:15:
Ik snap alleen de laatste zin van de opdracht niet. Namelijk: Test je methode door deze aan te roepen vanuit de main methode Bedenk zelf de signature van de methode
Again: zet 't eens om in pseudo-code:

code:
1
2
3
4
5
6
7
main [
  $input = lees_keyboard_input
  if ispalindroom<$input> then
    show "Woei!"
  else
    show "Sorry, geen palindroom :("
]

Zo moeilijk is dat toch niet?

[ Voor 28% gewijzigd door RobIII op 19-09-2013 20:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
RobIII schreef op donderdag 19 september 2013 @ 20:16:
[...]

Dan wat? Ik zie niet eens een poging tot...? Ik zie je alleen een string lezen van de input en daarna... niets. Ik neem aan dat je toch wel enigszins iets geprobeerd hebt? Zo ja: wat dan? Laat eens zien hoe ver je kwam, wat je gedachtengang is, desnoods schrijf je in pseudocode/nederlands eens uit hoe je zoiets zou (denken te) aanpakken. Daar kunnen we je mee helpen en input/feedback op geven; nu is het niet veel meer dan een "kan iemand m'n huiswerk even (half) afmaken voor me".
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Opdracht6 
{
    
    public static void main(String[] args) 
    {
        Scanner woord = new Scanner (System.in);
        System.out.println("Wat is het woord?");
        String woord1 = woord.next();
      
        StringBuilder pal = new StringBuilder(woord1);
 
        pal.reverse();
        
        
        if (woord1.equals(pal.toString()))
        System.out.println("De ingevoerde waarde is een palindroom");
        else
        System.out.println("De ingevoerde waarde is geen palindroom");
    }
}


Dit heb ik geschreven. Het werkt ook wel. Alleen moet het volgens de opdracht anders worden gedaan.
Bedenk zelf de signature van de methode. Test je methode door deze aan te roepen vanuit de main methode
Dit doet vermoeden dat je nog een 2e public static .... moet hebben. Zoals hierboven heb ik er maar 1.
En zoals eerder gezegd doe ik amper 2 dagen Java en hiervoor heb ik ook geen programmeerervaring.

[ Voor 0% gewijzigd door RobIII op 19-09-2013 20:21 . Reden: Code tags toegevoegd; ik blijf echter niet aan de gang ;-) ]


Anoniem: 304426

Doorgaans heb je wel iets van een StrRev (stringreverse) functie. Zoek daar eens naar.

edit: spuit11 @ mezelf.

[ Voor 107% gewijzigd door Anoniem: 304426 op 19-09-2013 20:23 ]


  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Gebruik a.u.b. code tags zoals eerder gezegd.
champion16 schreef op donderdag 19 september 2013 @ 20:19:
Dit doet vermoeden dat je nog een 2e public static .... moet hebben.
Waar doel je op met "dit"? En hoe kom je tot die conclusie?

Je moet inderdaad een 2e method hebben (een "public static...." kan vanalles zijn, waaronder een method). Een method is, in plat nederlands, een functie (die al-dan-niet een resultaat teruggeeft). Een method is een black box (waar je soms iets in stopt) en die iets doet (geefGas() of schilderKleur($mijnCanvas, "paars")) en mogelijk iets teruggeeft ($resultaat = isGroen($mijnAuto.Kleur)).

[ Voor 90% gewijzigd door RobIII op 19-09-2013 20:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Xudonax
  • Registratie: November 2010
  • Laatst online: 08-05 13:52
Heb je geleerd hoe functies/methodes werken? Oftewel, hoe je deze schrijft en aanroept? Dat is zo te zien namelijk het enige dat je nog mist :)

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
RobIII schreef op donderdag 19 september 2013 @ 20:20:
Gebruik a.u.b. code tags zoals eerder gezegd.

[...]

Waar doel je op met "dit"? En hoe kom je tot die conclusie?
Voor deze opdracht moest ik een programma schrijven dat onderzocht of een getal even of oneven was.
Daar stond ook dezelfde zin als bij deze opdracht, namelijk: De signature van de methode is :
public static boolean checkEvenGetal(int getal).
Test je methode door deze vanuit de main methode aan te roepen.

Bij deze opdracht gebruikte ik toen maar 1 methode, namelijk:
public static void main(String[] args)

Dit werd nagekeken en was fout, want er was niks gedaan met:
De signature van de methode is :
public static boolean checkEvenGetal(int getal).
Test je methode door deze vanuit de main methode aan te roepen.

Toen heb ik uiteindelijk met veel moeite ervoor gezorgd dat er 2 signatures waren. Namelijk:
public static void main(String[] args)
en public static boolean checkEvenGetal(int getal1).

vandaar dat ik denk dat er bij het programma ook gebruik gemaakt moet worden van 2 signatures. En daar zit ik vast.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

champion16 schreef op donderdag 19 september 2013 @ 20:25:
vandaar dat ik denk dat er bij het programma ook gebruik gemaakt moet worden van 2 signatures. En daar zit ik vast.
Lees de opdracht nog eens goed:
champion16 schreef op donderdag 19 september 2013 @ 19:47:
Schrijf een methode die bepaald of een String een palindroom is. [...] Bedenk zelf de signature van de methode. [...]
Test je methode door deze aan te roepen vanuit de main methode
Er moet gebruik worden gemaakt van 2 methods: main en een tweede die je zelf dient te verzinnen (zoals: boolean isPaars(string kleur) of boolean isEven(int getal)). De signature is puur welke parameters (volgorde, type) een method verwacht en wat voor type (if any) er gereturned wordt door de method. De voorgenoemde isPaars() en isEven() methods verwachten een string en een int respectievelijk als eerste (en enige) parameter. Dat is de signature. Het is niet heel zinnig om een methode

Employee isPalindroom(int getal, bool addSwag)

te maken; de signature is niet geschikt om te bepalen of een woord een palindroom is: een palindroom is een woord, geen int, en wat moet je met een result van 't type Employee? En waar dient de parameter addSwag voor?

Overigens staat 't ook gewoon op wikipedia en in de documentatie :) (Waar ik overigens lees dat 't return type geen onderdeel van de signature zou zijn; mja, kun je over twisten... boeie).

Ik zie net overigens dat je topic in Webdesign, Markup & Clientside Scripting staat; als je Waar hoort mijn topic? even wil lezen dan plaats je voortaan meteen je topics in 't juiste forum (Programming) en hoef ik niet te moven :Y)

WEB » PRG

[ Voor 71% gewijzigd door RobIII op 19-09-2013 20:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • pedorus
  • Registratie: Januari 2008
  • Niet online
champion16 schreef op donderdag 19 september 2013 @ 20:25:
vandaar dat ik denk dat er bij het programma ook gebruik gemaakt moet worden van 2 signatures. En daar zit ik vast.
Tsja, hoe ziet een programma eruit met 2 signatures? Zoiets:
Java:
1
2
3
4
5
6
7
8
9
10
public class Main {
    public static boolean isPalindrome(String s) {
        return s.length() < 2 || (s.charAt(0) == s.charAt(s.length() - 1)
            && isPalindrome(s.substring(1, s.length() - 1)));
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("kaak"));
    }
}

En voila, het werkt. Nu jij.
offtopic:
Bonusvraag, niet voor TS: bij welke input gaat deze functie isPalindrome() mis?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Nu wat jij? Er is niets meer over voor TS behalve copy/pasten uit jouw post. Goed bezig! :|

Wat is er gebeurd met de
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
-houding in de Devschuur®?
pedorus schreef op donderdag 19 september 2013 @ 20:54:
offtopic:
Bonusvraag, niet voor TS: bij welke input gaat deze functie isPalindrome() mis?
Had je deze ook voorzien als correct antwoord? ;) Of deze? En define "gaat mis" ;)

Waarschijnlijk doel je echter op zoiets? ;)

[ Voor 76% gewijzigd door RobIII op 20-09-2013 16:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • vistu
  • Registratie: Januari 2007
  • Laatst online: 10:44
RobIII schreef op donderdag 19 september 2013 @ 21:05:
[...]

Nu wat jij? Er is niets meer over. Goed bezig! :|
Moah, denk dat als ie dit inlevert zonder uitleg wat ie doet het nog een lastig verhaal wordt. Uitzoeken hoe dit precies werkt is op zich ook een mooie - leerzame - oefening :)

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Opdrachtzes {
    public static void main(String[] args)
    {
        Scanner woord = new Scanner(System.in);
        System.out.println("Geef het woord dat je wilt testen: ");
        String s1 = woord.next();
        StringBuilder b = new StringBuilder(s1);
        b.reverse();
        if(s1.equals(b.toString()))
        {
            System.out.println("Het woord is een palindroom");
        }
        else
        {
            System.out.println("Het woord is geen palindroom");
        }
        }
        
    }


Dit heb ik gedaan. Het werkt gewoon.
Waar ik nog steeds niet uitkom, is het gebruik van een tweede methode. Ik snap daar geen snars van.
Het is de bedoeling dat je de uit te voeren regels 'opdeelt' over 2 methodes?

[ Voor 1% gewijzigd door RobIII op 19-09-2013 21:15 . Reden: Laatste keer dat ik 't doe... ]


  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

champion16 schreef op donderdag 19 september 2013 @ 21:13:
Waar ik nog steeds niet uitkom, is het gebruik van een tweede methode. Ik snap daar geen snars van.
Ik snap er geen snars van dat je, ondanks dat je er in dit topic al meermaals op bent gewezen, nog steeds geen code tags gebruikt.
champion16 schreef op donderdag 19 september 2013 @ 21:13:
Het is de bedoeling dat je de uit te voeren regels 'opdeelt' over 2 methodes?
Als je dan eens reageert op de mensen die je hier proberen te helpen... Deze post bevat meer dan genoeg info over wat een methode is; wat snap je dan precies niet? En is je google stuk?

Stel nou dat je een wat complexer programma gaat maken en je gaat op een aantal plaatsen in dat programma een check moeten doen of een woord een palindroom is; copy/paste je dan overal die paar regels code ( 7 t/m 16) die de palindroom check doen? Of is het handig(er) om die palindroomcheck even te benoemen (zeg: isPalindroom(...)) en die dan vanuit die verschillende plekken aan te kunnen roepen?

[ Voor 32% gewijzigd door RobIII op 19-09-2013 21:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
RobIII schreef op donderdag 19 september 2013 @ 21:15:
[...]

Ik snap er geen snars van dat je, ondanks dat je er in dit topic al meermaals op bent gewezen, nog steeds geen code tags gebruikt.


[...]

Als je dan eens reageert op de mensen die je hier proberen te helpen... Deze post bevat meer dan genoeg info over wat een methode is; wat snap je dan precies niet?

Stel nou dat je een wat complexer programma gaat maken en je gaat op een aantal plaatsen in dat programma een check moeten doen of een woord een palindroom is; copy/paste je dan overal die paar regels code ( 7 t/m 16) die de palindroom check doen? Of is het handig(er) om die palindroomcheck even te benoemen (zeg: isPalindroom(...)) en die dan vanuit die verschillende plekken aan te kunnen roepen?
Het is handiger om die check te benoemen inderdaad.
Ook weet ik dat het niet simpelweg de eerste code opdelen is en zetten in de 2e methode.
Het punt is dat ik echt niet inzie hoe het moet gebeuren. Sorry als dit overkomt als: zij maken mijn hw.
Is het echt niet.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Tsja, zie mijn voorbeeld hierboven met 2 methodes, en let niet op de inhoud van de functie isPalindrome().. Je moet in jouw geval dus 2 methodes hebben die beginnen met public static, maar in jouw eigen code staat er maar 1.
RobIII schreef op donderdag 19 september 2013 @ 21:05:
Nu wat jij? Er is niets meer over voor TS behalve copy/pasten uit jouw post. Goed bezig! :|
offtopic:
Laat TS dat maar doen dan }) Valt natuurlijk direct door de mand, de namen en code zullen volledig anders moeten, die code is volledig onbruikbaar voor TS.
RobIII schreef op donderdag 19 september 2013 @ 21:05:
Had je deze ook voorzien als correct antwoord? ;) En define "gaat mis" ;)
offtopic:
Ik bedoel niet null, lijkt me goed om dan een exceptie te krijgen. Ik bedoel dat er woorden bestaan die palindroom zijn, maar die niet goedgekeurd worden door die functie.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

champion16 schreef op donderdag 19 september 2013 @ 21:27:
Het punt is dat ik echt niet inzie hoe het moet gebeuren.
Hoe is checkEvenGetal anders dan isPalindroom dan?
Ik heb een tweede optie die ook "mis" gaat ;) (Zie mijn edit)
pedorus schreef op donderdag 19 september 2013 @ 21:28:
offtopic:
lijkt me goed om dan een exceptie te krijgen
Daarom: define "mis" ;)

[ Voor 84% gewijzigd door RobIII op 19-09-2013 21:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik zou er mee stoppen nu het nog kan; dit gaat niks worden :+

  • pedorus
  • Registratie: Januari 2008
  • Niet online
offtopic:
Zie champion16 in "Overstappen binnen de ICT" - ik krijg daarom het idee getrolt te worden of er is iets ernstigs gebeurd.
RobIII schreef op donderdag 19 september 2013 @ 21:28:
Ik heb een tweede optie die ook "mis" gaat ;) (Zie mijn edit)
offtopic:
Die 2e vraag ik me af als je volledige optimalisaties aan hebt, zou een mooie test voor de JIT-compiler kunnen zijn. Ik bedoelde dat er woorden bestaan die false teruggeven, waar de code van TS terecht true oplevert.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
pedorus schreef op donderdag 19 september 2013 @ 21:48:
offtopic:
Zie champion16 in "Overstappen binnen de ICT" - ik krijg daarom het idee getrolt te worden of er is iets ernstigs gebeurd.


[...]

offtopic:
Die 2e vraag ik me af als je volledige optimalisaties aan hebt, zou een mooie test voor de JIT-compiler kunnen zijn. Ik bedoelde dat er woorden bestaan die false teruggeven, waar de code van TS true oplevert.
Aangezien je nu daarop komt, ik ben toen gestopt. 3 weken geleden ben ik weer met een studie begonnen.
Is daar iets mis mee?
Of is het de bedoeling dat ik alles uit mijn leven hier moet 'delen'.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Nee, maar het is wél handig als we on-topic blijven en je je even concentreert op je probleem, de reacties die je krijgt en daar iets mee doet ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
RobIII schreef op donderdag 19 september 2013 @ 21:52:
[...]

Nee, maar het is wél handig als we on-topic blijven en je je even concentreert op je probleem, de reacties die je krijgt en daar iets mee doet ;)
Tja om eerlijk te zijn heb ik nu geen enkel idee. Zelfs niet als ik al de reacties heb bekeken.
Ik weet alleen dat er een 2e methode moet komen met een zelfgekozen naam.
En een deel van de code van het eerste methode, die moet in de 2e. Een soort 'standaard' code voor dit soort problemen in het geval van een groter programma.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

champion16 schreef op donderdag 19 september 2013 @ 21:55:
[...]


Tja om eerlijk te zijn heb ik nu geen enkel idee. Zelfs niet als ik al de reacties heb bekeken.
Ik weet alleen dat er een 2e methode moet komen met een zelfgekozen naam.
En een deel van de code van het eerste methode, die moet in de 2e. Een soort 'standaard' code voor dit soort problemen in het geval van een groter programma.
Nou! Wat let je dan? ;) :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
Ten eerste:
moet de 2e methode een:
public static void ....()
public static boolean ....()
zijn?

Anoniem: 26306

champion16 schreef op donderdag 19 september 2013 @ 21:13:
Het is de bedoeling dat je de uit te voeren regels 'opdeelt' over 2 methodes?
Weet ik veel? Je kunt het probleem op vele manieren oplossen. Maar maak eens een methode die het woord omgedraaid returnt, en maak een methode die die methode gebruikt om een string met zijn eigen omgekeerde te vergelijken?

Bijvoorbeeld:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Opdracht6 {
    public static String omgedraaid(String woord) {
        return new StringBuilder(woord).reverse().toString();
    }

    public static boolean isPalindroom(String woord) {
        return woord.equals(omgedraaid(woord));
    }

    public static void main(String[] args)
    {
        Scanner woord = new Scanner(System.in);
        System.out.println("Geef het woord dat je wilt testen: ");

        if (isPalindroom(woord.next())
            System.out.println("Het woord is een palindroom");
        else
            System.out.println("Het woord is geen palindroom");
    }
}

Een programma opdelen in enorm simpele methodes kan helpen het leesbaar te houden.

  • DXaroth
  • Registratie: Maart 2011
  • Laatst online: 07-05 16:44
champion16 schreef op donderdag 19 september 2013 @ 21:55:
[...]


Tja om eerlijk te zijn heb ik nu geen enkel idee. Zelfs niet als ik al de reacties heb bekeken.
Ik weet alleen dat er een 2e methode moet komen met een zelfgekozen naam.
En een deel van de code van het eerste methode, die moet in de 2e. Een soort 'standaard' code voor dit soort problemen in het geval van een groter programma.
Je opdracht gaat niet om de code, het gaat om het begrijpen -waarom- je dat doet

Code in 1 grote brok schrijven doet men niet meer sinds basic, het is vaak (lees: 99% van alle gevallen) duidelijker om taken op te delen in kleine stukken; deze stukken zijn (zouden iig) dan herbruikbaar op andere plekken in je code.

In het voorbeeld van Cheatah bijvoorbeeld, hij splitst het omdraaien van een woord ook af naar zijn eigen functie (al is dit wellicht niet het meest zinnige voorbeeld), omdat je wellicht elders een andere case kan hebben waar je een woord omgedraaid wil hebben.

Het beste om jezelf dit aan te leren is simpel; als je een probleem krijgt, probeer eerst dat probleem op te splitsen in simpele stappen. Bijvoorbeeld

1) Bereken een palindroom.
Een palindroom is een woord wat omgedraaid hetzelfde is, dus we moeten een woord omdraaien. (functie 1)
Verder moeten we testen of een woord omgedraaid hetzelfde is (functie 2)
Verder moeten we input van de gebruiker afhandelen, zodat hij kan aangeven welk woord we moeten testen (functie 3)

Nu kan functie 3 in je main() call, maar ook makkelijk in een eigen functie. de andere 2 kunnen dan netjes op hun eigen plek.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
champion16 schreef op donderdag 19 september 2013 @ 21:51:
Aangezien je nu daarop komt, ik ben toen gestopt. 3 weken geleden ben ik weer met een studie begonnen.
Is daar iets mis mee?
Of is het de bedoeling dat ik alles uit mijn leven hier moet 'delen'.
Natuurlijk niet. Maar er zijn wel eens mensen die expres doen alsof ze zaken niet snappen.. Zo snap ik niet dat je bij een vorige opdracht een functie checkEvenGetal hebt gebruikt, maar nu niet meer snapt hoe je een methode maakt. Zelfs niet als ik een voorbeeld van een methode plaats.

Ik kan het eventueel nog wel uitwerken. We hebben een stukje code:
Java:
1
2
3
4
5
6
7
8
9
class Main
{
    public static void main (String[] args)
    {
        int getal = 1;
        boolean isEven = (getal % 2 == 0);
        System.out.println(isEven);
    }
}

Nu introduceren we een methode voor de logica:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Main
{
    public static void main (String[] args)
    {
        int getal = 1;
        boolean isEven = isEven(getal);
        System.out.println(isEven);
    }

    public static boolean isEven(int getal) {
        boolean isEven = (getal % 2 == 0);
        return isEven;
    }
}

En eventueel verminderen we het aantal regels nog wat:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
class Main
{
    public static void main (String[] args)
    {
        int getal = 1;
        System.out.println(isEven(getal));
    }

    public static boolean isEven(int getal) {
        return (getal % 2 == 0);
    }
}

Dit is zo'n standaard proces dat het een naampje heeft: refactoren. In een editor zoals Netbeans kun je zelfs zonder handmatig te editen van code 1 naar code 2 gaan (met alt-shift-m om precies te zijn), maar dat is iets voor later.

Wat op de plek van boolean of void of whatever moet komen is het type data dat je teruggeeft. Zie http://docs.oracle.com/ja...tsandbolts/datatypes.html voor veelvoorkomende types. Een goede editor kan dit trouwens ook gewoon voor je uitvinden.
offtopic:
@Cheatah: voor de edit was die post mooier...

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Anoniem: 303530

Ik vind het overigens opvallend dat je, schijnbaar na minimaal een half jaar TI, nog moeite hebt met hetgeen wat in dit topic voorbij komt. Ik denk dat pedorus daarover viel. Ik heb zelf onlangs een TI studie afgerond, ik kan me niet herinneren zo veel moeite te hebben gehad met het declareren van een functie. Misschien verschilt de studie TI dan meer tussen de verschillende scholen dan ik dacht.

Als je je afvraagt of een methode public static void ....() of public static boolean ....() moet zijn, begin dan bij het begin. Wat wil jij van je functie? Wil je een getal, boolean of niets ( = void ) als resultaat? Een goede naamgeving, zoals isPallindroom, geeft het antwoord eigenlijk al. Als je aan iemand vraagt of een woord een pallindroom is en hij geeft als antwoord 3.14, dan is er iets niet helemaal in orde.

Acties:
  • 0 Henk 'm!

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 15:03
Anoniem: 303530 schreef op donderdag 19 september 2013 @ 23:34:
Ik vind het overigens opvallend dat je, schijnbaar na minimaal een half jaar TI, nog moeite hebt met hetgeen wat in dit topic voorbij komt. Ik denk dat pedorus daarover viel. Ik heb zelf onlangs een TI studie afgerond, ik kan me niet herinneren zo veel moeite te hebben gehad met het declareren van een functie. Misschien verschilt de studie TI dan meer tussen de verschillende scholen dan ik dacht.

Als je je afvraagt of een methode public static void ....() of public static boolean ....() moet zijn, begin dan bij het begin. Wat wil jij van je functie? Wil je een getal, boolean of niets ( = void ) als resultaat? Een goede naamgeving, zoals isPallindroom, geeft het antwoord eigenlijk al. Als je aan iemand vraagt of een woord een pallindroom is en hij geeft als antwoord 3.14, dan is er iets niet helemaal in orde.
Mijn Ti heb ik maar een half jaartje gedaan. Qua programmeren kregen we barweinig. Een heel klein beetje C++ en de rest was CCNA(netwerken).

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

champion16 schreef op vrijdag 20 september 2013 @ 00:53:
[...]


Mijn Ti heb ik maar een half jaartje gedaan. Qua programmeren kregen we barweinig. Een heel klein beetje C++ en de rest was CCNA(netwerken).
En wéér kies je ervoor om op iets totaaaaaal irrelevants te reageren en de uitgebreide antwoorden die je proberen te helpen met je vraag totaal te negeren d:)b Ga zo door en ik brei er een eind aan want zélfs ik begin er nu aan te twijfelen of je loopt te trollen.

[ Voor 6% gewijzigd door RobIII op 20-09-2013 01:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 08-05 14:57
champion16 schreef op vrijdag 20 september 2013 @ 00:53:
[...]


Mijn Ti heb ik maar een half jaartje gedaan. Qua programmeren kregen we barweinig. Een heel klein beetje C++ en de rest was CCNA(netwerken).
Ze proberen je duidelijk te maken in deze opdrachten dat elke methode z'n eigen verantwoordelijkheid heeft. Als je procedureel gaat programmeren pleur je lekker alles onder elkaar.

Schiet tussen de palen en je scoort!


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08-05 19:28

Creepy

Tactical Espionage Splatterer

champion16 schreef op donderdag 19 september 2013 @ 22:01:
[...]


Ten eerste:
moet de 2e methode een:
public static void ....()
public static boolean ....()
zijn?
Denk zelf eens na? Er is al een keer of 10 aangegeven dat een methode isPalindroom() zou kunnen. Wat zou deze methode moeten teruggeven? Niks? true/false? Appels? Peren? Cijfers?

"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


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Ik ben eigenlijk van mening dat de TS gewoon aan zijn leraar om bijlessen moet vragen, want zelfs de absolute basis die je minder dan een dag kost om te leren snappen zit er niet in.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
boe2 schreef op vrijdag 20 september 2013 @ 12:49:
Ik ben eigenlijk van mening dat de TS gewoon aan zijn leraar om bijlessen moet vragen, want zelfs de absolute basis die je minder dan een dag kost om te leren snappen zit er niet in.
Ik betwijfel of bijlessen het gaan oplossen, het begrip is er simpelweg niet.

Hij heeft voor de iseven opdracht al exact gedaan wat er ook in deze opdracht gevraagd wordt en nu komt hij er niet meer uit (iseven / ispalindroom is simpelweg dezelfde aanpak, in principe zelfs nog zo goed als dezelfde signature)

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Lees anders deze 'les' even door:
http://docs.oracle.com/ja.../java/javaOO/methods.html

Hoewel ik denk dat je vast ook wel een boek hebt waar dit instaat....

Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 11:02
Erg creatieve oplossing, awesome

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:52

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Gomez12 schreef op vrijdag 20 september 2013 @ 12:57:
(... in principe zelfs nog zo goed als dezelfde signature)
Hangt er vanaf wat je onder de signature verstaat; volgens de algemene consensus is de signature 100% verschillend (want: return type niet meegerekend), en in 't andere geval op z'n minst 50% :P Dus "zo goed als dezelfde signature" vind ik wat kort door de bocht :+

Vanuit 't perspectief van de CLR valt de return type weer wél onder de signature overigens...

[ Voor 42% gewijzigd door RobIII op 20-09-2013 13:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Gamebuster schreef op vrijdag 20 september 2013 @ 13:22:
[...]

Erg creatieve oplossing, awesome
Creatief wel, efficiënt niet ;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 11:02
Woy schreef op vrijdag 20 september 2013 @ 14:51:
[...]

Creatief wel, efficiënt niet ;)
Je kan niet alles hebben he :P

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 18-02 21:39

Afvalzak

Zet jij mij even buiten?

Ik heb zin om een heerlijke vergelijking te maken met het bedrijfsleven:
Je main method is de werkgever. Het enige wat die eigenlijk doet is werk verdelen:

main:
Ik wil een palindroom gecheckt hebben.

vervolgens vraagt hij aan zijn werknemer of hij dit wil doen:

Main: Werknemer, kun jij checken of lepel een palindroom is.

Werknemer: Lepel, ik draai het om en er staat nog het zelfde. Antwoord: ja.

Dit komt dus op het volgende neer:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
System.out.println(werknemerCheckEensVoorMijOfDitEenPalindroomIs("Lepel"));

}


public boolean werknemerCheckEensVoorMijOfDitEenPalindroomIs(String woord){
// ik draai het woord om en kijk of het gelijk is aan het originele woord.

if(JA){

return true;
}
else{
return false;
}


}


Dat is het principe van methodes. Je wilt niet dat een methode (of persoon ;-)) alles doet, dus verdeel je het in duidelijkere happen codes.

[ Voor 8% gewijzigd door Afvalzak op 20-09-2013 15:51 ]

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

champion16 schreef op donderdag 19 september 2013 @ 22:01:
[...]


Ten eerste:
moet de 2e methode een:
public static void ....()
public static boolean ....()
zijn?
public static *iets*() betekent dat die methode een resultaat teruggeeft van het type *iets*. Wil je een kwadraat uitrekenen? Dan is *iets* een getal (int, double, ...). Wil je een kleur teruggeven? Dan is *iets* een kleur (Color, een klasse die standaard in Java zit). Wil je een ja/nee (true/false) teruggegeven? Dan is het een boolean. En als laatste is er nog void voor methodes die geen resultaat teruggeven.

Spuit 11 dat ik ben. Pagina 2 van het topic niet gezien. Misschien is dit dus al lang beantwoord. :+

[ Voor 26% gewijzigd door bwerg op 20-09-2013 19:51 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 23:01
xzaz schreef op vrijdag 20 september 2013 @ 08:50:
Als je procedureel gaat programmeren pleur je lekker alles onder elkaar.
Anders check je nog even wat procedureel programmeren ook al weer precies is. Het is *juist* een methode om verantwoordelijkheden te splitsen naar "subroutines".

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 17-03 09:43
farlane schreef op vrijdag 20 september 2013 @ 20:21:
[...]

Anders check je nog even wat procedureel programmeren ook al weer precies is. Het is *juist* een methode om verantwoordelijkheden te splitsen naar "subroutines".
Procedural programming can sometimes be used as a synonym for imperative programming [...]
Eerste zin van de door jouw gelinkte artikel ;) (Als in eigenlijk niet correct, maar wordt zo wel gebruikt)

[ Voor 5% gewijzigd door Caelorum op 20-09-2013 22:02 ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 23:01
Imperative programming sluit Procedural programming niet uit, zijn opmerking doet dat wel.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1