ในภาษาjava มีคำสั่งที่นิยมใช้กัน2คำสั่งคือ "if else" และ "switch case" if else จะเป็นคำสั่งที่ใช้ในทำนองที่ว่า "ถ้าอันนี้เป็นอย่างนี้แล้วทำอย่านั้นถ้าไม่ก็ทำอย่างนู้ เช่น if (x < 0) x++; else x=0; หมายความว่า ถ้าx<0 แล้ว ให้ทำx++ แต่ถ้า xไม่ได้<0แล้ว ก็ไปทำx=0ซะ รูปแบบของ if else
if (ปัญหา) คำสั่ง1; else คำสั่ง2; ปัญหา คือตัวที่จะใช้เป็นเงือนใขให้คอมพิวเตอร์เลือกทำงานอย่างไดอย่างหนึ่ง สามารถเป็นได้ทั้งตัวแปลชนิด boolean และ การดำเนินการที่ให้ผลออกมาเป็นboolean (true&false) เช่น boolean x=true,y=false; if (x) System.out.println("x is true"); if ( x && y ) System.out.println("x and y is true"); else System.out.println("x or y is false"); int z=5; if ( !(y || z=>0)) System.out.println("z<0"); หากคำสั่งที่ต้องการให้ทำภายใต้เงือนใขนั้นๆมีมากกว่า1คำสั่ง ให้ใช้{}ครอบ เพื่อให้เป็นชุดคำสั่งเดียวกัน เช่น if (ac=a; a=b; b=c; } เป็นต้น
switch case จะเป็นคำสั่งที่ใช้ในทำนองที่ว่า "ถ้าอันนี้ เป็นอย่างนี้ให้ทำอย่างนี้,เป็นอย่างนั้นให้ทำอย่านั้น,เป็นอย่างโน้นให้ทำอย่างโน้น,เป็นอย่างนู้นให้ทำอย่างนู้น ... ไม่เป็นอย่างไหนก็ให้ทำอย่างนี้"
เช่น switch (a) { case 1 : x = x+y; break; case 2 : x = x-y; break; case 3 : x = x*y; break; case 4 : x = x/y; break; default : x = 0; } ความหมาย ถ้าaเป็น1ให้ทำx=x+y ถ้าเป็น2ให้ทำx=x-y ถ้าเป็น3 ... ถ้าไม่เป็นอะไรในที่กำหนดมาก็ให้ทำ x=0 รูปแบบของ switch case switch(ตัวแปรปัญหา) case ค่าของตัวแปร : คำสั่ง1;break; case ค่าของตัวแปร : คำสั่ง2;break;
ความต่างของif และ switch if จะเลือกทำอย่างใดอย่างหนึ่ง โดยอาศัยการตัดสินใจจากคำว่า trueและfalse ส่วนswitch จะเป็นการเลือกเอาจาก1ในหลายทาง โดยอาศัยการตัดสินใจจากค่าที่ตรงกันของตัวที่นำมาตัดสินใจและค่าของcase ส่วนความเหมือนอยู่ที่ ถ้าเลือกทำอันหนึ่งแล้วจะไม่ทำอันอื่นอีก(เว้นแต่ลืมbreakหรือจงใจไม่ใส่break) วนรอบ ในภาษาjava มีคำสั่งที่นิยมใช้กัน3คำสั่งคือ for while และdo while
การใช้งาน for (ค่าตั้งต้น; เงื่อนไข; ปรับค่าตั้งต้น){ คำสั่ง คำสั่ง คำสั่ง คำสั่ง } เช่น for (int i=0; i<10; i++){ System.out.println(i); }
while (เงื่อนไข){ คำสั่ง คำสั่ง คำสั่ง คำสั่ง(ปรับค่าตั้งต้น) } เช่น int i = 0; while (i<10){ System.out.println(i); i++; }
do{ คำสั่ง คำสั่ง คำสั่ง คำสั่ง(ปรับค่า) while(เงื่อนไข); เช่น int i=0; do{ System.out.println(i); i++; while(i<10); ความต่างของทั้ง3คำสั่ง for จะมีช่องสำหรับค่าตั้งต้น เงื่อนไข และตัวปรับค่าให้ในตัว เป็นคำสั่งที่ใช้ง่ายที่สุดในบรรดาคำสั่งสำหรับการวนรอบทำซ้ำ และเหมาะสำหรับการวนรอบที่รู้จุดเริ่มต้น จุดจบ และจำนวนของรอบ ที่วนรอบทำซ้ำเป็นอย่างดี เช่นการพิมพ์ค่า1-10อย่างที่ทำมา while จะไม่มีช่องสำหรับค่าตั้งต้น และตัวปรับค่าให้เหมื่อนกับ for จะมีเพียงแต่เงื่อนไขเท่านั้น เหมาะสำหรับการวนรอบที่ใช้ค่าตั้งต้นที่เป็นoutputของคำสั่งอื่น(กำหนดค่าตั้งต้นเองไม่ได้) หรือไม่รู้จำนวนรอบที่แน่นอน (เช่น การเพิ่มขึ้นของค่าตั้งต้นไม่เป็นอนุกรม, ใช้ตัวตัดสินใจมากกว่า1 เป็นต้น) เช่น การอ่านfile ไม่ต้องมีค่าตั้งต้น อ่านไปทีละตัว อ่านไปเรื่อยๆจนกว่าจะหมด และไม่รู้ว่าหมดเมื่อไร do while คล้ายกับwhile แต่do while จะทำก่อน1รอบ แล้วจึงพิจารณาเงื่อนไข ว่าจะให้ทำต่อหรือข้ามไปทำอย่างอื่น เหมาะสำหรับการวนรอบที่จำเป็นต้องคิดค่าตั้งต้นในรอบ คำสั่งนี้ถือเป็นคำสั่งที่ใช้ยากและอันตรายที่สุด ไม่จำเป็นอย่าได้ใช้มันดีกว่าผมไม่แนะนำให้ใช้และจะไม่ยกตัวอย่าง แต่หากคิดว่า ใช้มันน่าจะดีกว่า ก็ลองใช้ไปเลยก็ได้ เพราะจริงๆแล้วผมก็เคยใช้มันบ้างเหมือนกัน
ok : No error : problem ok* : No error : Possible Loss of Precision pl : Error : Possible Loss of Precision x : Error : Incompatible Type
ไว้ฉุกเฉิน วิธีการทำ plเป็นok* เอาอย่างนี้เลยนะ int x; double y=10; x=(int)y;
เกี่ยวกับการประกาศตัวแปรก็ไม่มีอะไรแล้ว หรือไม่ก็มีแต่นึกไม่ออก - -a เพิ่มเติมเกี่ยวกับการดำเนินการนิดหน่อยนะครับ เครื่องหมาย = เป็นเครื่องหมายที่ใช้ทำให้ค่าตัวแปลทางซ้ายมือมีค่าเท่ากับทางขวามือ เช่น x = 5; // ในตอนนี้ x มีค่าเป็น5 x = 4; // ในตอนนี้ x มีค่าเป็น4 x = x + x; ในตอนนี้ x มีค่าเป็น8 ข้อควรระวัง เครืองหมาย = เป็นแค่การทำให้ทางซ้ายมีค่าเท่ากับทางขวาเท่านั้น อย่าไปยึดติดกับกฏคณิตศาสตร์ที่ว่า 2ข้างของสมการต้องเท่ากัน เพราะมันไม่ใช้สมการ เป็นแค่คำสั่งเท่านั้น
เครื่องหมายดำเนินการทางคณิตศาสตร์ + บวก - ลบ * คูณ / หาร เอาส่วน(จำนวนเต็ม) % หารเอาเศษ เช่น x = 3 + 2 // xมีค่าเป็น5 x = 5 - 1 // xมีค่าเป็น4 x = x * 2 // xมีค่าเป็น 8 x = x / 3 // xมีค่าเป็น 2 x = 10 % 3 // xมีค่าเป็น 1 แต่ในกรณีที่ datatype เป็น double หรือ fload (พวกมีจุดทั้งหลาย) เครื่องหมายหาร(/) จะทำเหมือนการหารธรรมดา เครื่องหมายดำเนินการทางคณิตศาสตร์ (เพื่อความง่าย) x++ หมายถึง x = x + 1 x-- หมายถึง x = x - 1 x += y หมายถึง x = x + y x -= y หมายถึง x= x - y x *= y หมายถึง x= x * y x /= y หมายถึง x= x / y ไม่มี x** หรือ x// นะ เครื่องหมายดำเนินการทางตรรกศาสตร์ x == y หมายถึง xเท่ากับy x < y หมายถึง xน้อยกว่าy x<=y หมายถึง xน้อยกว่าหรือเท่ากับy x > y หมายถึง xมากกว่าy x>=y หมายถึง xมากกว่าหรือเท่ากับy !x หมายถึง ไม่x (นิเสกx) x !=y หมายถึง xไม่เท่ากับy x%%y หมายถึง xและy x||y หมายถึง xหรือy !(x%%Y) หมายถึง ไม่ xและy ยกกำลัง กรณฑ์ ฯลฯ ไม่มี ความเดิมตอนที่แล้ว HelloWorld ผมกล่าวไว้แค่เฉพาะการเขียน(output)เท่านั้นไม่ได้มีเรื่องการอ่าน(inout)เลย คราวนี้เรามาดูโปรแกรมที่มีทั้งoutและinกันเถอะ 01-improt java.util.Scanner; 02-class InOut{ 03- public static void main(String args[]){ 04- Scanner reader=new Scanner(System.in); 05- String word=reader.nextLine(); 06- System.out.print(word); 07- } 08-} อธิบายโปรแกรม** หากมันยุงยากมากมายไป ข้ามไปดูสรุปโปรแกรมได้เลยครับ 01-ทำให้fileนี้ ใช้งานclass Scannerซื่งถูกเก็บไว้ในutilได้ 02-สร้างclass 03-โปแกรมmain 04-constructor Scanner เอา งง งง งง งง เรื่องconstructor เอาไว้ก่อนแล้วกันนะครับ กว่าจะถึงคงยังอีกไกล มาดูใกล้ๆกันก่อนดีกว่า เนื่องจากจาว่าไม่มีคำสั่งอ่านค่าหรือเขียนค่า จึงต้องใช้fileอื่นในการทำหน้าที่นี้ ในการเขียนจะใช้ Scanner Scanner reader=new Scanner(System.in); หากลองดูทีละส่วนแล้ว Scanner reader; จะเหมือนกับการประการตัวแปร reader โดยมีdata type เป็น Scanner reader=... ... ...;ก็หมายถึงกำหนดค่าว่าreader มีค่าเท่ากับอะไร ในที่นี้คือ reader มีค่าเป็นclass สุดท้าย new Scanner(System.in) เป็นการทำให้ class Scanner ใช้งานได้ และรับข้อมูลเป็นSystem.in รวมๆแล้วก็คือทำให้ ตัวแปร reader มีค่าเป็น class Scanner นั่นเอง คราวนี้ เราก็จะใช้ reader เป็น ตัวแปรในการทำงานการอ่านค่า 05-กำหนดค่า word=reader.nextLine(); reader.nextLine();คือคำสั่งที่ใช้ในการรับค่าจากทางคีย์บอด เมื่อรับมาแล้ว ก็นำมาเก็มไว้ใน ตัวแปร word นั่นเอง 06-เหมือนเดิม พิมพ์ค่า word 07-} 08-} จบ