Video: Klassen en Objecten1 2024
Zonder teveel in te slikken, hier is hoe de vindWithinHorizon (".", 0). charAt (0) techniek werkt: Java's findWithinHorizon-methode zoekt naar dingen in de invoer. De dingen die de methode vindt, zijn afhankelijk van de dingen die u tussen haakjes plaatst. Een oproep om te vindenWithinHorizon (" d d d", 0) zoekt bijvoorbeeld naar een groep die uit drie cijfers bestaat. Met de volgende regel code
Systeem. uit. println (keyboard. findWithinHorizon (" d d d", 0));
U kunt
Testen 123 Testen testen
en de computer antwoordt met
123
In de aanroep findWithinHorizon (" d d d", 0), staat elke d op voor een enkel cijfer. Dit d bedrijf is een van de vele afkortingen in speciale code genaamd reguliere expressies .
Nu is hier iets vreemds aan de hand. In de wereld van reguliere expressies staat een punt voor een willekeurig personage. (Dat wil zeggen, een punt staat voor "elk teken, niet per se een punt.") So findWithinHorizon (".", 0) vertelt de computer om het volgende teken te vinden dat de gebruiker op het toetsenbord typt. Wanneer u probeert een enkel teken in te voeren, is findWithinHorizon (".", 0) erg handig.
In de call findWithinHorizon (" d d d", 0), vertelt de 0 findWithinHorizon om te blijven zoeken tot het einde van de invoer. Deze waarde 0 is een speciaal geval omdat iets anders dan 0 de zoekopdracht beperkt tot een bepaald aantal tekens. (Daarom bevat de naam van de methode het woord horizon . horizon is wat de methode betreft.) Hier zijn enkele voorbeelden:
-
Met dezelfde invoer Testing 123 Testen Testen, de aanroep findWithinHorizon (" d d d", 9) retourneert null. Het wordt null geretourneerd omdat de eerste negen tekens van de invoer (de tekens Testen 1 - zeven letters, een lege spatie en een cijfer) geen drie opeenvolgende cijfers bevatten. Deze negen tekens komen niet overeen met het patroon d d d.
-
Met dezelfde invoer geeft de aanroep findWithinHorizon (" d d d", 10) ook null terug. Het wordt null geretourneerd omdat de eerste tien tekens van de invoer (de tekens Testen 12) geen drie opeenvolgende cijfers bevatten.
-
Met dezelfde invoer geeft de aanroep findWithinHorizon (" d d d", 11) 123 terug. Het geeft 123 terug omdat de eerste 11 tekens van de invoer (de tekens Test 123) deze 3 opeenvolgende cijfers bevatten.
-
Met de invoer A57B442123 Testen retourneert de aanroep findWithinHorizon (" d d d", 12) 442. Het geeft 442 terug omdat tussen de eerste 12 tekens van de invoer (de tekens A57B442123-test) de eerste reeks bestaat van 3 opeenvolgende cijfers is de sequentie 442.
Maar wacht! Om een enkel teken van het toetsenbord te pakken, bel je findWithinHorizon (".", 0). charAt (0). Wat is de rol van charAt (0) bij het lezen van één personage? Elke findWithinHorizon-oproep gedraagt zich alsof hij een aantal tekens vindt, niet slechts een enkel teken. Zelfs als u findWithinHorizon (".", 0) aanroept en de computer slechts één letter van het toetsenbord ophaalt, behandelt het Java-programma die letter als een van mogelijk veel ingevoerde tekens.
De aanroep naar charAt (0) zorgt voor het probleem met meerdere tekens. Deze charAt (0) -aanroep vertelt Java om het eerste teken te kiezen uit een van de tekens die gevonden wordenWith inHorizon ophalen.