Inhoudsopgave:
- Opdrachtregelargumenten gebruiken in een Java-programma
- Controleren op het juiste aantal opdrachtregelargumenten
Video: #374: Overnachting met Moeder van Giel [OPDRACHT] 2024
De meeste Java-programmeurs gebruikten ooit een tekstgebaseerde ontwikkelingsinterface. Ze typten een opdracht in een vlak venster, meestal met witte tekst op een zwarte achtergrond.
Hoe saai!Het vlakkige venster gaat langs de verschillende namen, afhankelijk van het soort besturingssysteem dat u gebruikt. In Windows is een dergelijk tekstvenster een opdrachtpromptvenster. Op een Macintosh en Linux is dit venster de -aansluiting. Sommige versies van Linux en UNIX noemen dit venster een -shell.
Hoe dan ook, in vroeger tijden kon je een programma schrijven dat extra informatie opzoog wanneer je de opdracht tikte om het programma te starten.
Wanneer u MakeRandomNumsFile start, typt u wat extra informatie.In de bovenstaande afbeelding typt de programmeur java MakeRandomNumsFile om het
MakeRandomNumsFile
-programma uit te voeren. Maar de programmeur volgt java MakeRandomNumsFile met twee extra stukjes informatie: MyNumberedFile. txt en 5 . Wanneer het programma
MakeRandomNumsFile
wordt uitgevoerd, zuigt het programma twee extra stukjes informatie op en gebruikt deze om alles te doen wat het programma moet doen. Het programma zuigt
MyNumberedFile op. txt 5
, maar bij een andere gelegenheid kan de programmeur SomeStuff 28 of BunchONumbers 2000 typen. De extra informatie kan verschillen elke keer dat u het programma uitvoert.
De volgende vraag is: "Hoe weet een Java-programma dat het extra informatie moet rondsnuffelen elke keer dat het wordt uitgevoerd? "Sinds je voor het eerst met Java begon te werken, zag je dit
String args []
-bedrijf in de kop van elke
hoofd
-methode. Wel, het wordt hoog tijd dat je erachter komt waar dat allemaal over gaat. De parameter
args []
is een array van
String
-waarden. Deze
String
-waarden worden opdrachtregelargumenten genoemd.
Sommige programmeurs schrijven
public static void main (String args [] )
en andere programmeurs schrijven
public static void main (String [] args)
Hoe dan ook,
args
is een array van
String
-waarden.
Opdrachtregelargumenten gebruiken in een Java-programma
Dit stukje code laat zien hoe u opdrachtregelargumenten gebruikt.
Zo genereert u een bestand met nummers
java importeren. util. Willekeurig;
java importeren. io. PrintStream;
java importeren. io. IOException;
public class MakeRandomNumsFile {
public static void main (String args [] ) gooit IOException {
Willekeurige generator = nieuw Willekeurig ();
if (args.lengte <2) {
Systeem. uit. println ("Usage: MakeRandomNumsFile filename number");
Systeem. exit (1);
}
PrintStream printOut = nieuwe PrintStream (args [0]);
int numLines = Geheel getal. parseInt (args [1]);
voor (int count = 1; count <= numLines; count ++) {
printOut. println (generator. nextInt (10) + 1);
}
afdruk. dichtbij();
}
}
Als een bepaald programma een aantal opdrachtregelargumenten verwacht, kunt u het programma niet op dezelfde manier starten als waarop u de meeste andere normale programma's zou starten. De manier waarop u opdrachtregelargumenten naar een programma toevoert, is afhankelijk van de IDE die u gebruikt: Eclipse, NetBeans of wat dan ook. Allmycode. com heeft instructies voor het invoeren van argumenten in programma's met verschillende IDE's.
Wanneer de code begint te lopen, krijgt de array
args
de waarden. Met de run die wordt weergegeven in de bovenstaande afbeelding, maakt de array-component
args [0]
automatisch de waarde
"MyNumberedFile. Txt"
en
args [1]
wordt automatisch
"5"
. De opdrachtinstructies van het programma hebben dus de volgende betekenis:
PrintStream printOut = new PrintStream ("MyNumberedFile. Txt");
int numLines = Geheel getal. parseInt ("5");
Het programma maakt een bestand met de naam
MyNumberedFile. txt
en stelt
numLines
tot
5
in. Dus later in de code genereert het programma willekeurig vijf waarden en zet die waarden in
MyNumberedFile. txt
. Eén run van het programma geeft je dit.
Na het uitvoeren van de code, waar vindt u het nieuwe bestand (
MyNumberedFile. Txt
) op uw harde schijf? Het antwoord hangt van veel verschillende dingen af. Als u een IDE gebruikt met programma's die zijn onderverdeeld in projecten, bevindt het nieuwe bestand zich ergens in de map van het project. Op de een of andere manier kun je listing 11-7 veranderen om een volledige padnaam te specificeren - een naam als
"c: \ Users \ MyName \ Documents \ MyNumberedFile. Txt"
or
"/ Users / MyName / Documents / MyNumberedFile. Txt"
.
In Windows bevatten bestandspadnamen backslash-tekens. En in Java, als u een backslash in een double-quoted String letterlijk wilt aangeven, gebruikt u in plaats hiervan een dubbele backslash. Dat is waarom "c: \ Users \ MyName \ Documents \ MyNumberedFile. txt "bevat paren backslashes. Bestandspaden in de Linux- en Macintosh-besturingssystemen bevatten daarentegen snijlijnen. Gebruik een enkele schuine streep om een schuine streep in een Java-reeks aan te geven.
Merk op hoe elk argument in de commandoregel een
String
-waarde is. Als je naar
args [1]
kijkt, zie je geen nummer 5 - je ziet de string
"5"
met een cijfer erin. Helaas kunt u die
"5"
niet gebruiken om te tellen. Om een
int
waarde van
"5"
te krijgen, moet u de
parseInt
-methode toepassen.
De
parseInt
-methode leeft in een klasse met de naam Integer. Dus, om
parseInt
aan te roepen, geeft u de naam parseInt op met het woord Integer. De
Integer
-klasse heeft allerlei handige methoden om dingen te doen met
int
-waarden.
In Java is Integer de naam van een klasse en int is de naam van een primitief (eenvoudig) type. De twee dingen zijn gerelateerd, maar ze zijn niet hetzelfde. De
Integer
-klasse heeft methoden en andere hulpmiddelen voor het omgaan met
int
-waarden.
Controleren op het juiste aantal opdrachtregelargumenten
Wat gebeurt er als de gebruiker een fout maakt? Wat als de gebruiker vergeet het nummer 5 te typen op de eerste regel w bij het starten van
MakeRandomNumsFile
?
Vervolgens wijst de computer
"MyNumberedFile. Txt"
toe aan
args [0]
, maar er wordt niets toegewezen aan
args [1]
. Dit is slecht. Als de computer ooit de instructie
int numLines = Integer bereikt. parseInt (args [1]);
het programma loopt vast met een onvriendelijke
ArrayIndexOutOfBoundsException
.
Wat doe je hieraan? U controleert de lengte van de array
args
. Je vergelijk
args. length
met
2
. Als de array
args
minder dan twee componenten bevat, geeft u een bericht op het scherm weer en verlaat u het programma.
Ondanks de controle van
args. lengte
is de code nog steeds niet crashbestendig. Als de gebruiker vijf in plaats van 5 typt, neemt het programma een duikvlucht met een
NumberFormatException
. Het tweede argument van de opdrachtregel kan geen woord zijn. Het argument moet een getal zijn (en een geheel getal). U kunt uitspraken toevoegen om de code kogelvrij te maken.
Wanneer u met opdrachtregelargumenten werkt, kunt u een
String
-waarde invoeren met een lege ruimte erin. Plaats de waarde gewoon tussen dubbele aanhalingstekens. U kunt bijvoorbeeld de bovenstaande code uitvoeren met argumenten
"Mijn groot vetbestand. Txt" 7
.