CodeGym /جاوا بلاگ /Random-SD /جاوا اسڪينر ڪلاس
John Squirrels
سطح
San Francisco

جاوا اسڪينر ڪلاس

گروپ ۾ شايع ٿيل
سلام اسان جو اڄ جو سبق خاص هوندو! اڄ جي سبق ۾، اسان جاوا اسڪينر ڪلاس بابت ڳالهائينداسين. اڳي، ڪم مڪمل ڪرڻ ۽ پروگرام لکڻ جو عمل سادو هو: اسان ڪجھ ڪوڊ لکون ٿا، main() طريقي سان هلون ٿا، پروگرام جيڪو گھري ٿو سو ڪري ٿو، ۽ اسان ڪيو آھي. پر هاڻي سڀ ڪجهه بدلجي ويندو! اڄ اسان سيکارينداسين ته ڪيئن واقعي پروگرام سان لهه وچڙ ۾: اسان اهو سيکارينداسين ته اسان جي عملن جو جواب ڪيئن ڏيو! ان کان اڳ جو اسان ڪوڊ جو تجزيو ڪرڻ شروع ڪريون، ڇا توھان کي ڪڏھن ڪنھن ڊيوائس جھڙي اسڪينر سان معاملو ڪرڻو پيو آھي؟ شايد. اسڪينر جي اندرون ڪافي پيچيده آهن، پر بنيادي خيال اهو ڪيئن ڪم ڪري ٿو تمام سادو آهي: اهو ڊيٽا پڙهي ٿو جيڪو صارف مهيا ڪري ٿو (جهڙوڪ پاسپورٽ يا انشورنس پاليسي) ۽ هن معلومات کي ياداشت ۾ محفوظ ڪري ٿو (مثال طور، هڪ تصوير جي طور تي) ). اڄ توهان پنهنجو اسڪينر ٺاهي رهيا آهيو! يقينا، اهو ڪاغذن جي دستاويز کي سنڀالڻ جي قابل نه هوندو، پر متن ان لاء ڪو مسئلو ناهي :) اچو ته وڃو!

جاوا اسڪينر ڪلاس

اسڪينر ڪلاس - 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 () جو طريقو ڊيٽا ماخذ تائين پهچندو آهي (اسان جو متن هڪ quatrain سان)، ڳولي ٿو ايندڙ اڻ پڙهيل لڪير (جيڪا هن معاملي ۾ پهرين لائن آهي)، ۽ ان کي واپس ڪري ٿي. پوء اسان ان کي ڪنسول تي ڏيکاري ٿو: ڪنسول آئوٽ:

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);

   }
}
NextInt () طريقو داخل ٿيل نمبر پڙهي ۽ واپس ڪري ٿو. اسان جي پروگرام ۾، اسان ان کي استعمال ڪريون ٿا قدر تفويض ڪرڻ لاءِ متغير نمبر . اهو اڳ ۾ ئي وڌيڪ حقيقي اسڪينر وانگر آهي! پروگرام صارف کي ڪنهن به نمبر داخل ڪرڻ لاء پڇي ٿو. استعمال ڪندڙ کان پوء اهو ڪيو آهي، پروگرام صارف جي مهرباني، نتيجو ڏيکاري ٿو، ۽ ختم ڪري ٿو. پر اسان وٽ اڃا به هڪ سنگين مسئلو آهي. استعمال ڪندڙ غلطي ڪري سگھي ٿو ۽ ڪجھ غلط داخل ڪري سگھي ٿو. هتي هڪ مثال آهي جتي اسان جو موجوده پروگرام ڪم ڪرڻ بند ڪري ٿو:

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);

   }
}
اچو ته اسٽرنگ داخل ڪرڻ جي ڪوشش ڪريون "CodeGym" بدران نمبر: ڪنسول آئوٽ:
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() - هي طريقو چيڪ ڪري ٿو ته ڇا ان پٽ جو ايندڙ حصو هڪ اسٽرنگ آهي. hasNextByte() , 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() . توهان هن طريقي ڏانهن هڪ اسٽرنگ پاس ڪريو. اسٽرنگ تي مشتمل آهي اکر جيڪي توھان استعمال ڪرڻ چاھيو ٿا جدا ڪندڙ يا حد بندي ڪندڙ. مثال طور، فرض ڪريو اسان کي اوچتو جاپاني شاعريءَ ۾ دلچسپي پيدا ٿي، ۽ عظيم شاعر Matsuo Bashō جي لکيل ھائڪو کي پڙھڻ لاءِ اسان جو اسڪينر استعمال ڪرڻ جو فيصلو ڪيو. جيتوڻيڪ ٽي مختلف سٽون اسان کي ھيئن منتقل ڪيون ويون آھن. ھڪڙو عجيب تار، اسان انھن کي آساني سان ورهائي سگھون ٿا ۽ انھن کي خوبصورت طور تي پيش ڪري سگھون ٿا:

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!

   }
}
بس اهو آهي! جئين توهان ڏسي سگهو ٿا، اهو ڪيترو مددگار آهي، اسڪينر ڪلاس استعمال ڪرڻ بلڪل آسان آهي! :) جيڪو توهان سکيو ان کي مضبوط ڪرڻ لاءِ، اسان توهان کي اسان جي جاوا ڪورس مان هڪ وڊيو سبق ڏسڻ جي صلاح ڏيون ٿا
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION