CodeGym/Java Blog/சீரற்ற/ஜாவா ஸ்கேனர் வகுப்பு
John Squirrels
நிலை 41
San Francisco

ஜாவா ஸ்கேனர் வகுப்பு

சீரற்ற குழுவில் வெளியிடப்பட்டது
members
வணக்கம்! இன்று எங்கள் பாடம் சிறப்பாக இருக்கும்! இன்றைய பாடத்தில், ஜாவா ஸ்கேனர் வகுப்பைப் பற்றி பேசுவோம். முன்னதாக, பணிகளை முடிப்பது மற்றும் நிரல்களை எழுதுவது எளிது: நாங்கள் சில குறியீட்டை எழுதுகிறோம், பிரதான () ஐ இயக்குகிறோம்முறை, நிரல் தேவையானதைச் செய்கிறது, நாங்கள் முடித்துவிட்டோம். ஆனால் இப்போது எல்லாம் மாறும்! நிரலுடன் உண்மையில் எவ்வாறு தொடர்புகொள்வது என்பதை இன்று கற்றுக்கொள்வோம்: எங்கள் செயல்களுக்கு எவ்வாறு பதிலளிப்பது என்பதை நாங்கள் கற்பிப்போம்! நாங்கள் குறியீட்டை பகுப்பாய்வு செய்யத் தொடங்கும் முன், ஸ்கேனர் போன்ற சாதனத்தை நீங்கள் எப்போதாவது கையாள வேண்டியிருந்ததுண்டா? அநேகமாக. ஸ்கேனரின் உட்புறம் மிகவும் சிக்கலானது, ஆனால் அது எவ்வாறு செயல்படுகிறது என்பதற்கான அடிப்படை யோசனை மிகவும் எளிமையானது: இது பயனர் வழங்கும் தரவைப் படிக்கிறது (பாஸ்போர்ட் அல்லது காப்பீட்டுக் கொள்கை போன்றவை) மற்றும் இந்தத் தகவலை நினைவகத்தில் சேமிக்கிறது (எடுத்துக்காட்டாக, ஒரு படம். ) இன்று நீங்கள் உங்கள் சொந்த ஸ்கேனரை உருவாக்கப் போகிறீர்கள்! நிச்சயமாக, இது காகித ஆவணங்களை கையாள முடியாது, ஆனால் உரை அதற்கு எந்த பிரச்சனையும் இருக்காது :) போகலாம்!

ஜாவா ஸ்கேனர் வகுப்பு

ஸ்கேனர் வகுப்பு - 1முதலில், நாம் java.util.Scanner வகுப்பைப் பற்றி அறிந்து கொள்ள வேண்டும். அதன் செயல்பாடு மிகவும் எளிமையானது. உண்மையான ஸ்கேனரைப் போலவே, நீங்கள் குறிப்பிடும் மூலத்திலிருந்து தரவைப் படிக்கும். உதாரணமாக, ஒரு சரம், ஒரு கோப்பு, பணியகம். அடுத்து, அது தகவலை அங்கீகரித்து சரியான முறையில் செயலாக்குகிறது. இங்கே எளிய உதாரணம்:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       String s = scanner.nextLine();
       System.out.println(s);
   }
}
ஸ்கேனர் பொருளை உருவாக்கி, அதன் தரவு மூலத்தைக் குறிப்பிட்டுள்ளோம் (உரையின் சரம்). nextLine () முறையானது தரவு மூலத்தை அணுகுகிறது (குவாட்ரெயினுடன் கூடிய எங்கள் உரை), அடுத்த படிக்காத வரியைக் கண்டறிந்து (இது இந்த வழக்கில் முதல் வரி) மற்றும் அதை வழங்குகிறது. பின்னர் அதை கன்சோலில் காண்பிக்கிறோம்: கன்சோல் வெளியீடு:
It matters not how strait the gate,
நாம் nextLine() முறையைப் பலமுறை பயன்படுத்தலாம் மற்றும் முழு கவிதைப் பகுதியையும் காட்டலாம்:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       String s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
   }
}
ஒவ்வொரு முறையும், எங்கள் ஸ்கேனர் ஒரு படி மேலே எடுத்து அடுத்த வரியைப் படிக்கும். நிரலின் வெளியீடு காட்டப்படும்:
It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate,
I am the captain of my soul
நாங்கள் ஏற்கனவே கூறியது போல், ஸ்கேனரின் தரவு மூலமானது ஒரு சரமாக இருக்க வேண்டியதில்லை. உதாரணமாக, அது பணியகம் இருக்கலாம். உங்களுக்காக சில உற்சாகமான செய்திகள்: முன்பு, நாங்கள் தரவை அங்கு காண்பித்தோம், ஆனால் இப்போது விசைப்பலகையில் இருந்து தரவைப் படிப்போம்! ஸ்கேனர் வகுப்பு வேறு என்ன செய்கிறது என்று பார்ப்போம் :
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
நெக்ஸ்ட்இன்ட் () முறையானது உள்ளிடப்பட்ட எண்ணைப் படித்துத் திருப்பித் தருகிறது. எங்கள் நிரலில், மாறி எண்ணுக்கு மதிப்பை ஒதுக்க இதைப் பயன்படுத்துகிறோம் . இது ஏற்கனவே உண்மையான ஸ்கேனர் போன்றது! நிரல் பயனரை எந்த எண்ணையும் உள்ளிடுமாறு கேட்கிறது. பயனர் இதைச் செய்த பிறகு, நிரல் பயனருக்கு நன்றி தெரிவிக்கிறது, முடிவைக் காட்டுகிறது மற்றும் முடிவடைகிறது. ஆனால் எங்களுக்கு இன்னும் ஒரு தீவிர பிரச்சனை உள்ளது. பயனர் தவறு செய்து ஏதாவது தவறாக உள்ளிடலாம். எங்கள் தற்போதைய நிரல் வேலை செய்வதை நிறுத்தும் ஒரு எடுத்துக்காட்டு இங்கே:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
ஒரு எண்ணுக்கு பதிலாக "கோட்ஜிம்" சரத்தை உள்ளிட முயற்சிப்போம்: கன்சோல் வெளியீடு:
Enter a number:
CodeGym
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:10) Process finished with exit code 1
அட டா. நாங்கள் பெரும் சிக்கலில் உள்ளோம் -_- இதுபோன்ற சூழ்நிலைகளைத் தவிர்க்க, பயனர் உள்ளிட்ட தரவைச் சரிபார்க்கும் வழியை நாங்கள் உருவாக்க வேண்டும். எடுத்துக்காட்டாக, பயனர் எண்ணைத் தவிர வேறு எதையும் உள்ளிட்டால், உள்ளிடப்பட்ட தகவல் எண் அல்ல என்ற எச்சரிக்கையைக் காண்பிப்பது நல்லது. தகவல் சரியாக இருந்தால், நாங்கள் உறுதிப்படுத்தலாம். ஆனால் இது எங்கள் ஸ்ட்ரீமில் என்ன வரப்போகிறது என்பதைப் பார்க்க "எதிர்காலத்தைப் பார்க்க" வேண்டும். ஸ்கேனர் இதைச் செய்ய முடியுமா ? மற்றும் எப்படி! இதைச் செய்வதற்கு இது பல முறைகளைக் கொண்டுள்ளது: hasNextInt() — இந்த முறையானது உள்ளீட்டுத் தரவின் அடுத்த பகுதி எண்ணாக உள்ளதா என்பதைச் சரிபார்க்கிறது (சரியானதா அல்லது தவறானது, பொருத்தமானது எனத் தருகிறது). hasNextLine() — இந்த முறையானது உள்ளீட்டின் அடுத்த பகுதி சரமா என்பதைச் சரிபார்க்கிறது. உள்ளதுNextByte() ,hasNextShort() , hasNextLong() , hasNextFloat() , hasNextDouble() — இந்த முறைகள் அனைத்தும் மீதமுள்ள தரவு வகைகளுக்கு ஒரே மாதிரியான சோதனைகளைச் செய்கின்றன. எங்கள் எண்-ரீடிங் திட்டத்தை மாற்ற முயற்சிப்போம்:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       if (sc.hasNextInt()) {
           int number = sc.nextInt();
           System.out.println("Thanks! You entered the number " + number);
       } else {
           System.out.println("Sorry, but this is clearly not a number. Restart the program and try again!");
       }

   }
}
இப்போது உள்ளிடப்படும் அடுத்த எழுத்து எண்தானா என்பதை எங்கள் நிரல் சரிபார்க்கிறது. அது இருந்தால் மட்டுமே அது உறுதிப்படுத்தலைக் காட்டுகிறது. உள்ளீடு காசோலையை கடக்கவில்லை என்றால், நிரல் கவனத்தில் கொண்டு பயனரை மீண்டும் முயற்சி செய்யும்படி கேட்கிறது. அடிப்படையில், நீங்கள் ஸ்கேனர் பொருளுடன் தொடர்பு கொள்ளலாம் மற்றும் எந்த தரவு வகை உங்களுக்கு காத்திருக்கிறது என்பதை முன்கூட்டியே கண்டறியலாம் . எண், சரம் அல்லது வேறு ஏதாவது? எண்? மற்றும் என்ன வகையான? ஒரு int , short , long ?" இந்த நெகிழ்வுத்தன்மை பயனரின் நடத்தையைப் பொறுத்து நிரல் தர்க்கத்தை உருவாக்க உங்களுக்கு வாய்ப்பளிக்கிறது. நாம் மற்றொரு முக்கியமான முறையைக் கவனிக்க வேண்டும்: useDelimiter() . இந்த முறைக்கு நீங்கள் ஒரு சரத்தை அனுப்புகிறீர்கள். சரத்தில் உள்ளது நீங்கள் பிரிப்பான்களாக அல்லது பிரிப்பான்களாகப் பயன்படுத்த விரும்பும் எழுத்துக்கள். உதாரணமாக, ஜப்பானியக் கவிதைகளில் திடீரென்று ஆர்வம் ஏற்பட்டு, மகா கவிஞரான மாட்சுவோ பாஷோ எழுதிய சில ஹைக்கூவைப் படிக்க எங்கள் ஸ்கேனரைப் பயன்படுத்த முடிவு செய்தோம் என்று வைத்துக்கொள்வோம். மூன்று வித்தியாசமான வசனங்கள் நமக்கு ஒரு சங்கடமான சரமாக அனுப்பப்பட்டாலும், அவற்றை எளிதாகப் பிரித்து அழகாக வழங்கலாம்:
public class Main {
   public static void main(String[] args) {
       Scanner scan = new Scanner("On a withered branch'" +
               "A crow has alighted.'" +
               "Nightfall in autumn." +
               "''***''" +
               "Such a moon above,'" +
               "Like a tree cut at the root:'" +
               "he fresh cut is white." +
               "''***''" +
               "How the river floods!'" +
               "A heron wanders on short legs,'" +
               "Knee-deep in the water.");

       scan.useDelimiter("'");

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

       scan.close();
   }
}
"\ n /*/*/*" (புதிய வரி எழுத்து மற்றும் மூன்று நட்சத்திரக் குறியீடுகள்) எங்கள் பிரிப்பானாகப் பயன்படுத்துகிறோம் . இதன் விளைவாக, புத்தகங்களில் உள்ளதைப் போலவே எங்களிடம் அழகான கன்சோல் வெளியீடு உள்ளது:
On a withered branch
A crow has alighted.
Nightfall in autumn.

***

Such a moon above,
Like a tree cut at the root:
The fresh cut is white.

***

How the river floods!
A heron wanders on short legs,
Knee-deep in the water.
இந்த எடுத்துக்காட்டில் இன்னும் ஒரு முறை உள்ளது, அதை நாம் கண்டிப்பாக சுட்டிக்காட்ட வேண்டும்: மூடு() . I/O ஸ்ட்ரீம்களுடன் பணிபுரியும் எந்தவொரு பொருளையும் போலவே, ஸ்கேனர் முடிந்ததும் மூடப்பட வேண்டும், எனவே அது கணினியின் வளங்களை உட்கொள்வதை நிறுத்துகிறது. நெருக்கமான () முறையை ஒருபோதும் மறந்துவிடாதீர்கள் !
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

       sc.close(); // Now we've done everything right!

   }
}
அவ்வளவுதான்! நீங்கள் பார்க்க முடியும் என, இது எவ்வளவு பயனுள்ளதாக இருக்கிறது என்பதற்கு, ஸ்கேனர் வகுப்பைப் பயன்படுத்துவது மிகவும் எளிதானது! :) நீங்கள் கற்றுக்கொண்டதை வலுப்படுத்த, எங்கள் ஜாவா பாடத்திலிருந்து ஒரு வீடியோ பாடத்தைப் பார்க்க பரிந்துரைக்கிறோம்

மேலும் வாசிப்பு:

கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை