Java >> Java tutorial >  >> Java

Sådan bruger du scanneren i Java

Scanneren er en klasse i java.util-pakken. Denne klasse er ansvarlig for at læse data fra en streng, tastaturet, en fil eller et netværksstik. Denne artikel fokuserer udelukkende på at læse tastaturinputtet og vise outputtet i et terminalvindue. Læsning af data fra en fil eller en netværkskanal foregår på samme måde. Scanneren udskriver ikke terminalvinduet. Brug System.out-objektet til at udskrive til terminalen. Det er nemt at udskrive til terminalen med dette objekt.

Scanner-klassen importeres først, før den bruges. Derefter skabes et objekt ud fra det. Scannerobjektet skal lukkes, efter at det har været brugt. System.in er input-stream-objektet, der repræsenterer tastaturet. Scanneren bruges på mange forskellige måder. I denne artikel vil vi diskutere de almindeligt anvendte.

Java Scanner-klassen opdeler som standard input i tokens ved at bruge mellemrum som afgrænser. Den har flere metoder til at læse og analysere forskellige primitive værdier. Java Scanner-klassen anvender også ofte et regulært udtryk til at analysere tekst for strenge og primitive typer. Det er den mest ligetil metode til at få input i Java. Ved at bruge Javas scanner kan vi få input fra brugeren i primitive typer såsom int, long, double, byte, float, short, og så videre.

Metoder i Java-scannerklassen

Procedurerne for scanneren er som følger:

close()

Den bruges til at lukke scanneren ned.

afgrænser()

Det bruges til at erhverve det mønster, som Scanner-klassen bruger til at matche skilletegn.

findAll()

Det bruges til at finde en strøm af matchresultater, der matcher den angivne mønsterstreng.

findInLine()

Det bruges til at opdage den næste forekomst af et mønster, der består af den medfølgende streng uden at tage afgrænsninger i betragtning.

findWithinHorizon()

Det bruges til at opdage den næste forekomst af et mønster, der består af den medfølgende streng uden at tage afgrænsninger i betragtning.

hasNext()

Hvis den givne scanner har et andet token i sit input, returnerer det sandt.

hasNextBigDecimal()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en BigDecimal ved hjælp af nextBigDecimal()-metoden.

hasNextBigInteger()

Det bestemmer, om det næste token i denne scanners input kan læses som en BigDecimal ved hjælp af nextBigDecimal()-metoden.

hasNextBoolean()

Det bruges til at bestemme, om det næste token i denne scanners input kan oversættes til en boolesk ved hjælp af nextBoolean()-metoden.

hasNextByte()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en byte ved hjælp af nextBigDecimal()-metoden.

hasNextDouble()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en BigDecimal ved hjælp af nextByte()-metoden.

hasNextFloat()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en Float ved hjælp af nextFloat()-metoden.

hasNextInt()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en int ved hjælp af nextInt() metoden.

hasNextLine()

Den bruges til at se, om der er en anden linje i scannerens input.

hasNextLong()

Det bruges til at bestemme, om det næste token i denne scanners input læses som en Long ved hjælp af nextLong()-metoden.

hasNextShort()

Det bruges til at bestemme, om det næste token i denne scanners input kan læses som en Short ved hjælp af nextShort()-metoden.

ioException()

Den bruges til at hente den sidste IOException, der blev kastet af denne scanner.

Scannerklassen bruges ligetil. Følgende kode beder brugeren om at indtaste en sætning, som efterfølgende vises:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

      Scanner scanCode = new Scanner(System.in);
System.out.println("Start by typing  a sentence, then, press Enter:");

      String sentence = scanCode.nextLine();
System.out.println(sentence);

scanCode.close();
  }
}

Scannerklassen importeres i første linje. Den første linje i hovedfunktionen opretter et scannerobjekt ved at henvise til "System.in"-objektet for tastaturet. Scannerobjektet begynder at vente på input, så snart det er oprettet. Den næste linje udskriver en sætning, der beder brugeren om at indtaste en sætning. Den næste kodelinje bruger scannerobjektets nextLine()-metode til at læse brugerens sætning, når han trykker på Enter.

Den næste linje genprinter sætningen i terminalvinduet i koden. Scannerobjektet lukkes med den sidste linje.

Spytte værdier fra inputlinjen

Ved at bruge mellemrummet som afgrænsning opdeler følgende kode inputlinjen i ord (tokens):

import java.util.Scanner;

public class CodeClass {
  public static void main(String[] args) {
      Scanner scanCode = new Scanner(System.in);
System.out.println(" Start by typing a line of tokens,then, press Enter:");

while(scanCode .hasNext()){  
System.out.println(scanCode .next());  
      }

scanCode.close();
  }
}

Scannerobjektet indeholder yderligere to metoder:hasNext() og next(). Når scannerobjektet læser en linje, gemmes det. next() fører dig til det næste token (ord). Hvis yderligere tokens ikke er blevet tilgået endnu, returnerer hasNext() true.

Desværre kræver denne metode, at brugeren indtaster input til opdeling og genvisning. For at afslutte skal du trykke på Ctrl+z, og du vil blive ført tilbage til kommandoprompten.

Afgrænsningstegnet i ovenstående kode adskiller tokens i rummet. Det er muligt at bruge en anden karakter. Kommaet bruges i følgende kode. Hvis du tester koden, så glem ikke at trykke på Ctrl+z for at afslutte løkken.

import java.util.Scanner;

public class CodeClass {
  public static void main(String[] args) {
      Scanner scanCode = new Scanner(System.in);

System.out.println("Typing tokens in a line, then, press Enter:");

scanCode.useDelimiter(",");

while(scanCode.hasNext()){  
System.out.println(scanCode.next());  
      }

scanCode.close();
  }
}

Hvis du testede koden (output), har du måske bemærket, at mellemrum i tokens er blevet indarbejdet som en del af tokens, hvis du testede koden (output). Efter inputlinjen er blevet læst, skriv scanObj.useDelimiter(“,”); det er det, der gør kommaet til afgrænsningen.

Primitive datatyper:Læsning og validering

nextBoolean() som en metode, der returnerer en boolsk værdi

Brugeren forventes at skrive "sand" eller "falsk" uden citaterne i den følgende kode og derefter trykke på Enter-tasten. Hvis brugeren skriver noget andet, såsom "ja" eller "nej", vises en fejlmeddelelse.

import java.util.Scanner;

public class CodeClass {
  public static void main(String[] args) {

System.out.print("Kindly confirm if you are below 50? ");  
      Scanner scanCode = new Scanner(System.in);

boolean boolVal = scanCode.nextBoolean();  
      if (boolVal == true) {  
System.out.println("You are below 50");  
      }
      else if (boolVal == false) {  
System.out.println("You are over 50");  
      }

scanCode.close();  
  }
}

Fordi java vil kaste en fejl, hvis input ikke er nøjagtigt sandt eller falsk, er "andet hvis" blevet brugt i stedet for "andet". Forskellen mellem print og println er, at print forventer input på den aktuelle linje, mens println forventer input på den følgende linje.

nextByte() som en metode

Et tegn i ASCII-tegnsættet er én byte. I nogle østlige tegnsæt kan et tegn dog bestå af mere end én byte. NextByte-metoden læser og validerer den næste byte af input uanset tegnsættet. Til dette bruges følgende kode:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

System.out.print("Enter a number below 300,then, press Enter: ");  
      Scanner scanCode = new Scanner(System.in);

      byte nextByte = scanCode.nextByte();  
System.out.println(nextByte);  

scanCode.close();  
  }
}

En fejladvarsel vises, hvis der indtastes et tal større end 300 eller et alfabet for denne kode.

nextInt() som en metode

Det næste heltalstoken kan også valideres og accepteres som input. Du kan bruge følgende kode:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

System.out.print("Input any Integer Value: ");  
      Scanner scanCode = new Scanner(System.in);

      int numVar = scanCode.nextInt();  
System.out.println(numVar);  

scanCode.close();  
  }
}

Der er ikke flere førende eller efterfølgende rum. Enhver heltalsværdi, inklusive værdier over 300, vil være tilladt for denne kode. Der vises en fejlmeddelelse, når valideringen mislykkes ved hjælp af disse nextXXX()-metoder.

Metode nextBigInteger()

Det ser ud til, at softwareingeniører aldrig løber tør for nye ideer. Et stort heltal er et tal med en værdi væsentligt større end et heltal. Det læses dog på samme måde som et heltal i Java. Følgende kode viser dette:

import java.util.Scanner;
import java.math.BigInteger;

public class CodeClass {
  public static void main(String[] args) {

System.out.println("Input an Integer of your choice for Big Integer: ");  
      Scanner scanCode = new Scanner(System.in);

BigInteger numVar = scanCode.nextBigInteger();  
System.out.println(numVar);  

scanCode.close();  
  }
}

Importsætningen "import java.math.BigInteger;" skal bemærkes. Den store heltalstype er også angivet med et stort B i stedet for et lille b.

nextFloat() som en metode

Det næste flydende token kan også valideres og accepteres som input. Du kan bruge følgende kode:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

System.out.print("Input any Float Value: ");  
      Scanner scanCode = new Scanner(System.in);

      float numVar = scanCode.nextFloat();
System.out.println(numVar);  

scanCode.close();  
  }
}

23.456 er et eksempel på et flydende tal. Der er ikke flere førende eller efterfølgende mellemrum.

nextDouble()

Det næste dobbelte token kan også valideres og accepteres som input. Du kan bruge følgende kode:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

System.out.print("Input any Double Value: ");  

      Scanner scanCode = new Scanner(System.in);

      double numVar = scanCode.nextDouble();
System.out.println(numVar);  

scanCode.close();  
  }
}

23.456 er et eksempel på et dobbelttal. Et dobbelt tal adskiller sig fra et flydende tal, fordi det har en mindre fejlmargen. Der er ikke flere førende eller efterfølgende mellemrum.

nextLine() som en metode

NextLine()-metoden finder den næste linje i en streng. Nylinjetegnet, '\n,' kan bruges, hvis strengen er inputlinjen fra tastaturet efter at have trykket på Enter. Du kan bruge følgende kode:

import java.util.Scanner;

public class CodeClass {
  public static void main(String[] args) {

System.out.println("Input a line showing  \\n : ");  

      Scanner scanCode = new Scanner(System.in);

      String str = scanCode.nextLine();
System.out.println(str);  

scanCode.close();  
  }

Det er værd at bemærke, at strengtypen starter med et stort S i stedet for et lille s. I denne artikel blev metoderne nextLine(), hasNext() og next() brugt tidligere. Andre måder og rudimentære datametoder er tilgængelige på scanneren – mere om det senere.

Tildeling af input til en specifik variabel

Som vist i koden nedenfor, kan input tildeles til en variabel:

import java.util.Scanner;

public class CodeClass {

  public static void main(String[] args) {

      Scanner scanCode = new Scanner(System.in);

System.out.print("Enter Name: ");
      String nameVal = scanCode.nextLine();  

System.out.print("Input your age: ");
      int ageVal = scanCode.nextInt();  

System.out.print("Enter your current remuneration: ");
      double salaryVal = scanCode.nextDouble();  

System.out.println("Your name is: " + nameVal + ", and your age is: " + ageVal + ", While your current remuneration is: " + salaryVal);  

scanCode.close();  
  }
}

Eksempel:Læsning af brugerinput og visning tilbage til brugeren

 // initially, Import the Scanner class as follows
import java.util.Scanner;

class CodeMain {

  public static void main(String[] args) {

    Scanner scanCode = new Scanner(System.in);  // Creation of a Scanner object
    System.out.println("Input your username");

    String codeUserName = scanCode.nextLine();  // Reading the user input
    System.out.println(" Your Username is: " + codeUserName);  // Output the user input
  }
}

Eksempel:Brug af forskellige metoder til at læse data af forskellige typer

import java.util.Scanner;

class CodeMain {

  public static void main(String[] args) {

    Scanner scanCode = new Scanner(System.in);

    System.out.println("Please provide your name, your current age, and your current remuneration:");

    // String input
    String enterYourName = scanCode.nextLine();

    // Numerical input
    int enterYourAge = scanCode.nextInt();
    double enterYourSalary = scanCode.nextDouble();

    // Output user's input
    System.out.println("Your name is: " + enterYourName);
    System.out.println("Your age is: " + enterYourAge);
    System.out.println("Your salary is: " + enterYourSalary);
  }
}

Konklusion

Scanneren er en klasse i java.util-pakken. Denne klasse er ansvarlig for at læse data fra en streng, tastaturet, en fil eller et netværksstik. Dette essay fokuserer på at læse tastaturets input og vise outputtet i terminalvinduet. Læsning af input fra en streng, fil eller netværkskanal kan udføres på samme måde.

Brug funktionen nextLine() til at læse hele linjen med tastaturinput. hasNext(), next()-metoderne og while-løkken bruges til at opdele en linje i tokens. Rummet er desuden standard opdelt afgrænser, selvom programmøren kan bruge en hvilken som helst anden afgrænser. Husk at trykke på Ctrl+z for at afslutte while-løkken, hvis det er nødvendigt.

Andre systemer, der ikke er dækket af denne artikel, bruges til at fjerne forreste og efterfølgende mellemrum. Derudover kan andre skemaer, der ikke er til stede her, bruges til at validere tokens. NextBoolean(), nextByte(), nextInt() og andre primitive funktioner kan bruges til at læse primitive værdier. Disse nextXXX()-metoder kontrollerer for fejl og eliminerer indledende og efterfølgende mellemrum.

Der er mange flere metoder i Java-scanneren. Dog er scannerens grundlæggende betjening blevet dækket i denne artikel. Således er valget af et token opnået ved brug af regulære udtryk.


Java tag