Tuesday, June 14, 2016

ස්ට්‍රින්ග් read කරනවිට වෙන වැරදි.

9 වන පාඩම(input read from user)(දෙවන කොටස)
දැන් වැදගත්ම කොටස.
ඔයාල කලින් lesson එකේ පලවෙනි ප්‍රෝග්‍රෑම් එකට මෙහෙම ඉන්පුට් දීල බලන්න.
nalaka
123
456.23
56
false
දැන් nalaka 123 456.23 56 false එක පෙලට ටයිප් කරල enter key ප්‍රෙස් කරන්න.
එකම අවුට්පුට් එක ලැබෙයි.මේක වැදගත් වෙන්නෙ ප්‍රෝග්‍රෑම් competition වලදි.ඒවගෙදි එයාල කියනව input එක දෙන විදිය.ඒ වගෙම output එක දෙන්න ඕනි විදියත් කියනව,ඒ වගෙ programe කරනකොට මේ ටික හොඳට
අවබෝධ කරගෙන තියනවනම් ලේසි වෙයි.

දැන් බලමු s.nextLine(); මෙතඩ් එක ගැන.
import java.util.Scanner;
public class ReadFromUser
 {
            public static void main(String[] args)
            {         
            Scanner s=new Scanner(System.in);
            //int j=s.nextInt();
            String fullname=s.nextLine();
            int i=s.nextInt();
           
            //System.out.println("int : "+j);
            System.out.println("full name is: "+fullname);
            System.out.println("int : "+i);
            }
}දැන් comment දාල තියෙද්දි මුලින්ම රන් කරන්න.
Input එක nalaka senarathna
23
එතකොට output එක මේක එයි.
full name is: nalaka senarathna
int : 23
දැන් comment අයින් කරල  රන් කරන්න.
Input එක ,
23
nalaka senarathna
එතකොට output එක මේක එයි.
Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at ReadFromUser.main(ReadFromUser.java:9)
මෙතනදි මේ අව්ල වෙන්නෙ 23 දීල එන්ටර් කරන නිසා.එතනදි read කරන්න ඉල්ලන්නෙ int  අගයක්.
23
56
ඉන්පුට් එක දෙන්න  දැන් පෙනෙයි මොකක්ද වෙලා තියෙන්නෙ කියල.
int : 23
full name is:
int : 23
කියල ආවද.

දැන් මෙහෙම කරන්න
23 nalaka senarathna
56
පේනවද දැන් අනෙක් අගය දෙන්න පුලුවන් වෙනව .
දැන් output එක එයි
int : 23
full name is: nalaka senarathna
int : 56

ඉතින් හැම වෙලාවෙම මෙහෙම කරන්න බෑනෙ.සමහර වෙලාවට එන්ටර් කර කරනෙ ඉන්පුට් දෙන්න තියෙන්නෙ. ඒකට අපේ කෝඩ්  එක පොඩි වෙනසක් කරනව මේ අව්ල නැති කරගන්න.
                       int j=s.nextInt();
                       s.nextLine();
                       String fullname=s.nextLine();
                       int i=s.nextInt();
                       System.out.println("int : "+j);
                       System.out.println("full name is: "+fullname);
                       System.out.println("int : "+i);
දැන් මන් highlight කරල තියන ස්ටේට්මන්ට් එක යොදල ඉන්පුට් දෙන්න.මතක තියාගන්න මේ වෙනස කරන්නෙ එන්ටර් කර කර ඉන්පුට් දෙන්න  ඕනි වෙලාවට.
23
nalaka senarathna
56
මේකෙදි කලින් වගේ error මැසේජ්  එකක් පෙන්නන එකක් නෑ.මෙතනදි අපි පලවෙනි ඉන්පුට් එක දීල space තියල  පහත විදියට ඉන්පුට් දෙන්න.
23 456 jkl
nalaka senarathna
56

ඒකෙදිත්
23
nalaka senarathna
56
අවුට්පුට් එක එයි 456 jkl කියන කොටස discard වෙලා.දැන් තේරෙනවනේද හොඳට.
Enter කර කර ඉන්පුට් දෙනකොට මේ ගැන මතක තිබුනොත් වරදින්න තියන ඉඩකඩ  අඩුවෙයි.
මුලින්ම ඉන්ට්,ලෝන්ග් වගෙ අගයන් read කරල  String රීඩ් කරන්න යනකොට s.nextLine(); කියන මෙතඩ් එකෙන්  මේ ගැන අවදානය දෙන්න.


No comments:

Post a Comment