ความรู้เทียบกับทักษะ
วิทยาลัยสอนเราว่าไม่มีความแตกต่างอย่างมากระหว่างทฤษฎีและการปฏิบัติ แน่นอนคุณเข้าใจว่าไม่เหมือนกัน แต่คุณไม่เห็นความแตกต่างหลัก ยังมีหนึ่ง คนส่วนใหญ่ใส่เครื่องหมายความเท่าเทียมกันระหว่าง "ฉันรู้" และ "ฉันทำได้" คุณ? แล้วตัวอย่างล่ะ?- ฉันรู้ว่าการสูบบุหรี่ไม่ดีสำหรับฉัน แต่ฉันสูบ
- ฉันรู้ว่าอาหารจานด่วนไม่ดีสำหรับฉัน แต่ฉันก็กินมัน
- ฉันรู้กฎจราจรแต่ฉันขับรถไม่เป็น
- ฉันรู้ว่าการวิ่งเหยาะๆ นั้นดีสำหรับฉัน แต่ฉันไม่วิ่งเหยาะๆ ในตอนเช้า
คุณมาถึงระดับใหม่แล้ว
ระดับ 9
1 Risha การติดตามสแต็ก
- เฮ้! วันนี้จะมาบอกว่าสแต็คเทรซคืออะไร แต่ก่อนอื่นให้ฉันอธิบายคุณว่ากองคืออะไร - ลองนึกภาพกองเอกสาร - การมอบหมายงานให้กับเสมียนคนหนึ่ง การมอบหมายใหม่สามารถวางไว้บนสุดของสแต็ก และเขาจะรับงานจากบนสุดของสแต็ก ดังนั้นการมอบหมายจะไม่ทำตามลำดับก่อนหลัง ทุกครั้งที่เสมียนรับมอบหมายงานสุดท้าย โครงสร้างคอลเลกชันดังกล่าวเรียกว่าสแต็ก . - ใน Java มีคอลเลกชันพิเศษ - Stack คอลเลกชันนี้มีวิธีการ «เพิ่มองค์ประกอบ» และ «ใช้(รับ/นำออกไป) องค์ประกอบ» ดังที่คุณทราบแล้ว องค์ประกอบสุดท้ายที่เพิ่มจะถูกนำไปใช้ก่อน - ฮัม ไม่น่าจะยากนะผมว่า - ดี. จากนั้นให้ฉันอธิบายว่าสแต็กเทรซ คืออะไรเป็น. - ลองนึกภาพว่าในฟังก์ชัน Java Аเรียกฟังก์ชัน Bและฟังก์ชันหลังเรียกฟังก์ชันCซึ่งในทางกลับกันเรียกฟังก์ชัน D ดังนั้น หากต้องการออกจากฟังก์ชัน Bคุณต้องออกจากฟังก์ชัน C ก่อนและต้องออกจากฟังก์ชัน D ก่อน สิ่งนี้คล้ายกับสแต็กมาก - และความคล้ายคลึงกันคืออะไร? - ในสแต็ก เพื่อไปยังการมอบหมายบางอย่าง คุณต้องทำงานมอบหมายทั้งหมดให้เสร็จก่อน - มันก็ค่อนข้างจะคล้าย ๆ กัน แต่ฉันไม่แน่ใจว่าฉันเข้าใจทุกอย่างถูกต้องหรือไม่ - ดูนี่. ใน Java สแต็คคือชุดขององค์ประกอบ มันเหมือนกระดาษเป็นปึกๆ ในการรับแผ่นที่สามจากด้านบนคุณต้องใช้แผ่นงานที่สอง แต่ก่อนหน้านั้นคุณต้องใช้แผ่นแรก คุณสามารถวางและนำแผ่นงานได้ตลอดเวลา แต่คุณสามารถวางได้เฉพาะด้านบนและดึงจากด้านบนเท่านั้น เช่นเดียวกับการเรียกใช้ฟังก์ชัน ฟังก์ชัน Аเรียกฟังก์ชัน Bฟังก์ชันหลังเรียกฟังก์ชัน C หากต้องการออกจากАคุณต้องออกจากB ก่อน และในการทำเช่น นี้ คุณต้องออกจากC - รอสักครู่. ถ้าฉันเข้าใจถูกต้อง สแต็คทั้งหมดจะกลายเป็น «สามารถเก็บแผ่นงานสุดท้ายที่วางบนสแต็กได้เท่านั้น» และ «ก่อนอื่น ฟังก์ชันที่เรียกใช้ล่าสุดควรออก» อย่างนั้นเหรอ? - ใช่. ดังนั้น ลำดับของการเรียกใช้ฟังก์ชันจึงเป็น «function call stack» หรือเรียกง่ายๆ ว่า «call stack» ฟังก์ชันที่เรียกใช้สุดท้ายจะต้องถูกยกเลิกก่อน ลองดูตัวอย่าง: - ตกลง ฉันเดาว่าทุกอย่างชัดเจนด้วยการเรียกใช้ฟังก์ชัน แต่StackTraceElement นี้คือ อะไร - เครื่องเสมือน Java บันทึกการเรียกใช้ฟังก์ชันทั้งหมด เพื่อจุดประสงค์นี้จึงมีคอลเลกชันพิเศษ - สแต็ค เมื่อฟังก์ชันหนึ่งเรียกใช้ฟังก์ชันอื่น JVM จะวางองค์ประกอบใหม่StackTraceElementลงในสแต็กนี้ เมื่อฟังก์ชันสิ้นสุดลง อิลิเมนต์จะถูกลบออกจากสแต็ก ดังนั้น สแต็คนี้จะเก็บข้อมูลที่เป็นปัจจุบันอยู่เสมอเกี่ยวกับสถานะปัจจุบันของ «การเรียกฟังก์ชันสแตก» - ทุกStackTraceElementมีข้อมูลเกี่ยวกับวิธีการที่เรียกว่า ดังนั้นคุณสามารถรับชื่อเมธอดนี้ได้โดยใช้getMethodName - ตัวอย่างด้านบนแสดงให้เห็นว่า:- รับ «กองโทร»:
- วนซ้ำอาร์เรย์โดยใช้ลูปfor- each ฉันหวังว่าคุณจะยังไม่ลืมมัน
- พิมพ์ชื่อเมธอดไปที่System.out
2 ดิเอโก งานแสดงการติดตามสแต็ก
- เฮ้ อามีโก้! นี่เป็นงานเล็กๆ น้อยๆ ในการแสดงสแต็กเทรซบนหน้าจองาน | |
---|---|
1 | แต่ละเมธอดควรส่งคืน StackTrace Write ห้าเมธอดที่เรียกหากัน แต่ละเมธอดควรส่งคืน StackTrace |
2 | StackTrace อีกครั้ง เขียนห้าวิธีที่โทรหากัน แต่ละเมธอดควรส่งคืนชื่อเมธอดผู้โทร คุณสามารถรับวิธีการโทรโดยใช้ StackTrace |
3 | เมธอดควรส่งคืนหมายเลขบรรทัดของโค้ด เมธอดนี้ถูกเรียกจากเมธอด Write ห้าเมธอดที่เรียกหากัน แต่ละเมธอดควรส่งคืนหมายเลขบรรทัดของโค้ดที่เรียกใช้เมธอดนี้ ใช้ฟังก์ชันelement.getLineNumber( ) |
4 | สแต็กเทรซของ 10 สาย เขียนโค้ดเพื่อรับสแต็กเทรซของ 10 สาย |
5 | วิธีการควรส่งคืนผลลัพธ์ - ความลึกของการติดตามสแต็ก เขียนวิธีการที่แสดงและส่งคืนความลึกของการติดตามสแต็ก ความลึกของการติดตามสแต็กคือจำนวนของเมธอด (จำนวนของอิลิเมนต์ในรายการ) |
3 Elly ข้อผิดพลาดและข้อยกเว้น
- เฮ้ อามีโก้! วันนี้เรามีบทเรียนที่น่าสนใจมาก ฉันจะบอกคุณเกี่ยวกับข้อยกเว้น ข้อยกเว้นเป็นกลไกพิเศษในการควบคุมข้อผิดพลาดในโปรแกรม ต่อไปนี้คือตัวอย่างบางส่วนของข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม:- โปรแกรมพยายามเขียนไฟล์ให้เต็มดิสก์
- โปรแกรมพยายามเรียกเมธอดของตัวแปรที่เก็บการอ้างอิงค่าว่าง
- โปรแกรมพยายามที่จะหารตัวเลขด้วย 0
- เมื่อเกิดข้อผิดพลาด Java virtual machine จะสร้างวัตถุพิเศษ – ข้อยกเว้น – ที่มีข้อมูลทั้งหมดเกี่ยวกับข้อผิดพลาด สำหรับข้อผิดพลาดที่แตกต่างกันมีข้อยกเว้นที่แตกต่างกัน
- จากนั้นข้อยกเว้นนี้บังคับให้โปรแกรมขัดจังหวะฟังก์ชันปัจจุบันทันที และฟังก์ชันถัดไป จนกว่าจะออกจากเมธอดหลัก หลังจากนั้นโปรแกรมจะสิ้นสุดลง นักพัฒนา Java เรียกกระบวนการนี้ว่า «ย้อนกลับ call stack»
- หากมีข้อยกเว้นเกิดขึ้นภายใน บล็อก tryโค้ดในบล็อกนี้จะไม่ถูกดำเนินการอีกต่อไป แต่การดำเนินการของ block catchจะเริ่มต้นขึ้น
- หากไม่มีข้อยกเว้นเกิดขึ้น บล็อก try จะถูกดำเนินการจนจบและcatchจะไม่ถูกดำเนินการ
4 Elly, RuntimeException, โยน
- ฉันตัดสินใจที่จะนำเสนอหัวข้ออื่นในวันนี้ ใน Java ข้อยกเว้นทั้งหมดแบ่งออกเป็นสองประเภท – ควบคุม/ตรวจสอบและไม่ควบคุม/ไม่ตรวจสอบ ข้อยกเว้นที่ตรวจสอบจะต้อง ตรวจจับ ได้ ที่ไม่ได้ตรวจสอบสามารถตรวจจับได้แต่ไม่จำเป็น - เป็นไปได้ไหมที่จะโยนข้อยกเว้นในรหัสโดยตั้งใจ? - ในโค้ดของคุณ คุณสามารถโยนข้อยกเว้นได้เอง คุณสามารถเขียนข้อยกเว้นของคุณเองได้ แต่เราจะเจาะลึกลงไปในหลุมนี้ในภายหลัง ตอนนี้เรามาเรียนรู้วิธีการทำงานกับข้อยกเว้นที่ส่งโดยเครื่องเสมือน Java - ตกลง. - ถ้ายกเว้นClassNotFoundExceptionและFileNotFoundExceptionถูกโยน (ปรากฏ) ในเมธอด โปรแกรมเมอร์ต้องระบุในลายเซ็นของเมธอด (เมธอดเฮดเดอร์) มีการตรวจสอบข้อยกเว้นดังกล่าว มักจะมีลักษณะดังนี้: - ดังนั้น เราแค่เขียนการโยนและระบุข้อยกเว้นโดยคั่นด้วยเครื่องหมายจุลภาค ขวา? อย่างนั้นเหรอ? - ใช่. แต่มีอีกสิ่งที่น่าสนใจ เพื่อให้ตัวอย่างด้านล่างได้รับการรวบรวม เมธอดที่เรียกmethod1()จึงต้องจับข้อยกเว้นเหล่านี้หรือส่งต่อ หากคุณต้องการส่งข้อยกเว้นที่ ตรวจสอบแล้วไปข้างหน้า คุณต้องระบุในส่วนหัวของเมธอด - อีกครั้ง หากใน เมธอด หลักคุณต้องการเรียกเมธอดที่มีวลีส่วนหัวโยน FileNotFoundException, …คุณต้องทำหนึ่งในสองสิ่งนี้:- เพื่อจับข้อยกเว้น FileNotFoundException, …
คุณจะต้องห่อโค้ดที่คุณเรียกใช้เมธอดที่เป็นอันตรายด้วยบล็อกtry-catch - ไม่จับข้อยกเว้น FileNotFoundException, …
5 ริชา กลิ้งกองถ่าย วิธีทำอยู่ในข้อยกเว้น
- ฉันอยากจะบอกคุณอีกเล็กน้อยเกี่ยวกับวิธีการทำงานของข้อยกเว้น ตัวอย่างด้านล่างอธิบายว่า: - ฉันไม่เข้าใจ - ตกลง. ฉันจะอธิบายสิ่งที่เกิดขึ้น - ในตัวอย่างด้านซ้าย เราเรียกเมธอดหลายตัวตามลำดับลูกโซ่ ในmethod2()เราสร้างและโยนข้อยกเว้นโดยเฉพาะ (เพื่อเริ่มต้นข้อผิดพลาด) - ตัวอย่างด้านขวาแสดงให้เห็นว่าเกิดอะไรขึ้น ดูที่method2( ) นั่นคือสิ่งที่การสร้างข้อยกเว้นแปลงเป็น: เราสร้างวัตถุ ประเภท RuntimeExceptionเก็บไว้ในข้อยกเว้น ตัวแปร พิเศษและออกจากเมธอดทันที – return - ในmethod1หลังจากการเรียกใช้method2จะมีการตรวจสอบมีข้อยกเว้นหรือไม่; หากมีข้อยกเว้น method1 จะยุติทันที การตรวจสอบนี้ทำโดยปริยายหลังจากเรียกใช้เมธอด Java (!) แต่ละเมธอด - ว้าว! - อย่างแน่นอน. - ในคอลัมน์ทางด้านขวาใน method mainฉันเขียนว่าเกิดอะไรขึ้นเมื่อตรวจพบข้อยกเว้นโดยบล็อกtry-catch หากไม่มีข้อยกเว้น โค้ดจะดำเนินการต่อไปตามที่วางแผนไว้ หากมีข้อยกเว้นประเภทที่ระบุในcatchเราจะจัดการให้ - และการโยนและอินสแตนซ์หมายถึงอะไร? - ดูที่บรรทัดสุดท้ายทางด้านซ้ายโยน RuntimeException ใหม่. ด้วยวิธีนี้เราจะสร้างและโยนข้อยกเว้น นี่เป็นเพียงตัวอย่างเท่านั้น เราจะไม่ทำจนถึงตอนนี้ - ใช้คำสั่ง « а instanceof B » ในบล็อกด้านขวา เราจะตรวจสอบว่าวัตถุaมีประเภทB หรือ ไม่ นั่นคือไม่ว่าวัตถุที่จัดเก็บไว้ในข้อยกเว้นตัวแปร จะมีประเภท RuntimeException หรือไม่ มันเป็นนิพจน์เชิงตรรกะ - เริ่มชัดเจนขึ้นเล็กน้อย6 ดิเอโก งานจับข้อยกเว้น
- ดูนี่! ลุงดิเอโกนำงานบางอย่างมาให้คุณ ขอให้คุณโชคดี. ฉันคิดว่าคุณจะต้องการมัน เฮ้ - เฮ้ อามีโก้! ต่อไปนี้คืองานจับข้อยกเว้นที่น่าสนใจบางส่วนจับงาน | |
---|---|
1 | 1. ข้อยกเว้นเมื่อทำงานกับตัวเลข จับข้อยกเว้นที่เกิดขึ้นเมื่อเรียกใช้รหัส: int a = 42 / 0; แสดงข้อยกเว้นบนหน้าจอโดยระบุประเภทของมัน |
2 | 2. ข้อยกเว้นเมื่อทำงานกับสตริง จับข้อยกเว้นที่เกิดขึ้นเมื่อรันโค้ด: สตริง s = null; สตริง m = s.toLowerCase(); แสดงข้อยกเว้นบนหน้าจอโดยระบุประเภทของมัน |
3 | 3. ข้อยกเว้นเมื่อทำงานกับอาร์เรย์ จับข้อยกเว้นที่เกิดขึ้นเมื่อรันโค้ด: int[] m = new int[2]; ม.[8] = 5; แสดงข้อยกเว้นบนหน้าจอโดยระบุประเภทของมัน |
4 | 4. ข้อยกเว้นเมื่อทำงานกับ List collections จับข้อยกเว้นที่เกิดขึ้นเมื่อรันโค้ด: ArrayList<String> list = new ArrayList<String>(); สตริง s = list.get(18); แสดงข้อยกเว้นบนหน้าจอโดยระบุประเภทของมัน |
5 | 5. ข้อยกเว้นเมื่อทำงานกับคอลเล็กชันแผนที่ จับข้อยกเว้นที่เกิดขึ้นเมื่อรันโค้ด: HashMap<String, String> map = new HashMap<String, String>(null); map.put(โมฆะ, โมฆะ); map.remove (โมฆะ); แสดงข้อยกเว้นบนหน้าจอโดยระบุประเภทของมัน |
7 Risha การจับหลายครั้งได้ผลอย่างไร
- ตอนนี้มีการบรรยายที่น่าสนใจเพิ่มเติม ฉันชอบการสอนมาก - ฉันต้องการบอกคุณว่าการจับ หลายครั้ง ทำงาน อย่างไร ที่จริงแล้วมันง่ายมาก: เมื่อมีข้อยกเว้นเกิดขึ้นในบล็อกtry การดำเนินการของโปรแกรมจะถูกโอนไปยังcatch แรก - หากประเภทที่ระบุในวงเล็บของ block catch เหมือนกับประเภทของวัตถุยกเว้น การดำเนินการโค้ดจะเริ่มขึ้นภายใน {} มิฉะนั้นเราไปจับ ต่อไป . การตรวจสอบซ้ำที่นั่น - หากไม่มีcatch block แล้ว แต่ข้อยกเว้นไม่ถูกจับ มันจะถูกส่งไปข้างหน้า และวิธีการปัจจุบันจะถูกขัดจังหวะ - ฉันเห็น. การจับนั้นจะถูกดำเนินการ ประเภทที่ตรงกับประเภทของข้อยกเว้น - ใช่ถูกต้อง. จริงๆ แล้ว มันซับซ้อนกว่านั้นเล็กน้อย ประเด็นก็คือ คลาสสามารถสืบทอดจากกันและกันได้ หากคลาส «Cow» สืบทอดมาจากคลาส «Animal» อ็อบเจ็กต์ประเภท «Cow» อาจถูกจัดเก็บไม่เฉพาะในตัวแปรประเภท «Cow» แต่ยังอยู่ในตัวแปรประเภท «สัตว์» ด้วย . - แล้วไง - เนื่องจากข้อยกเว้นทั้งหมดสืบทอดมาจากคลาสExceptionหรือRuntimeException (ซึ่งสืบทอดมาจากException เช่นกัน ) ข้อยกเว้นทั้งหมดอาจถูกจับได้โดยใช้คำสั่งcatch (Exception e)หรือcatch (RuntimeException e ) - แล้วไง - นี่หมายความว่าขั้นแรก คุณสามารถจับข้อยกเว้นโดยใช้คำสั่ง catch(Exception e ) ประการที่สอง ลำดับของ บล็อก catchมีความสำคัญ ตัวอย่าง: - ArithmeticExceptionที่เกิดจากการหารด้วย 0 ถูกจับได้ในการจับครั้งที่สอง - ในตัวอย่างด้านล่างArithmeticExceptionถูกจับในcatch แรก เนื่องจากคลาสของข้อยกเว้นทั้งหมดสืบทอดมาจากข้อยกเว้น ดังนั้นException จะจับข้อยกเว้นใดๆ - ในตัวอย่างด้านล่าง ข้อยกเว้นArithmeticExceptionไม่ถูกตรวจจับ แต่ส่งต่อไปยังเมธอดการโทร - ตอนนี้เริ่มชัดเจนขึ้นแล้ว ข้อยกเว้นเหล่านี้ไม่ใช่เรื่องง่าย - ดูเหมือนจะเป็นเช่นนั้นเท่านั้น อันที่จริง มันเป็นหนึ่งในสิ่งที่ง่ายที่สุดใน Java - ฉันสงสัยว่าจะดีใจหรือเสียใจกับมันดี...8 ดิเอโก งานจับข้อยกเว้นหลายรายการ
- เฮ้ อามีโก้! เมื่อวานฉันเมาและทำให้งานของคุณซับซ้อนเกินไป แต่ฉันหวังว่าคุณจะไม่มีความรู้สึกหนักใจและคุณจะแก้ปัญหาทั้งหมดได้หรือไม่ เพื่อประโยชน์ของคุณเอง ที่นี่:งาน | |
---|---|
1 | 1. ข้อยกเว้น มีเมธอดที่ส่งข้อยกเว้นสองรายการที่สืบทอดมาจากExceptionและอีกสองรายการที่สืบทอดมาจากRuntimeException : NullPointerException , ArithmeticException , FileNotFoundExceptionและURISyntaxException คุณต้องจับNullPointerExceptionและFileNotFoundExceptionแต่ไม่ต้องจับArithmeticExceptionและURISyntaxException ทำอย่างไร? |
2 | 2. การจับข้อยกเว้น มีข้อยกเว้นสามข้อที่สืบทอดมาจากข้อยกเว้น ตามลำดับ : คลาส Exception1 ขยาย คลาสข้อยกเว้น Exception2 ขยาย คลาส Exception1 ข้อยกเว้น3 ขยาย Exception2 มีวิธีการซึ่งอธิบายไว้ดังต่อไปนี้: สาธารณะ static void method1() โยนข้อยกเว้น1, ข้อยกเว้น2, ข้อยกเว้น3 เขียนจับ บล็อกเพื่อจับข้อยกเว้นทั้ง 3 ข้อยกเว้น 1ข้อยกเว้น 2และข้อยกเว้น 3 |
3 | 3. การจับข้อยกเว้นแบบเลือก 1. ค้นหาว่ามีข้อยกเว้นอะไรบ้างที่ส่งโดยเมธอดBEAN.methodThrowExceptions 2. เมธอดprocessExceptions()ควรเรียกเมธอดBEAN.methodThrowExceptionsและจัดการข้อยกเว้น: 2.1 หากเกิดข้อยกเว้นFileSystemExceptionให้บันทึกโดยเรียกใช้เมธอดBEAN.logและส่งต่อ 2.2 หากเกิดข้อยกเว้นCharConversionException หรือ IOExceptionอื่นๆให้บันทึกโดยเรียกใช้เมธอดBEAN.log 3 เพิ่มคลาส/ประเภทของข้อยกเว้นที่คุณกำลังส่งต่อใน 2.1 ไปยังกระบวนการข้อยกเว้น ()ลายเซ็นวิธีการ 4. จัดการข้อยกเว้นที่เหลือในเมธอด main() และบันทึก ใช้try..catch เคล็ดลับ: หากคุณตรวจพบข้อยกเว้นMyExceptionซึ่งคุณไม่ต้องการจับ คุณสามารถส่งต่อโดยใช้รหัสต่อไปนี้: catch (MyException e) { โยน e; } |
4 | 4. ตรวจจับข้อยกเว้นที่ตรวจสอบ จัดการข้อยกเว้นที่ตรวจสอบทั้งหมดในเมธอดprocessExceptions( ) คุณต้องแสดงหน้าจอแต่ละข้อยกเว้นการตรวจสอบที่เกิดขึ้น คุณสามารถใช้เพียงหนึ่งบล็อก ลอง |
5 | 5. จับข้อยกเว้นที่ไม่ได้ตรวจสอบ จัดการข้อยกเว้นที่ไม่ได้ตรวจสอบทั้งหมดในเมธอดprocessExceptions( ) คุณต้องแสดงสแต็กเทรซของแต่ละข้อยกเว้นที่เกิดขึ้นบนหน้าจอโดยใช้เมธอดprintStack () คุณสามารถใช้เพียงหนึ่งบล็อก ลอง |
9 ศาสตราจารย์ บรรยายเรื่องข้อยกเว้น
- วันนี้เรามีหัวข้อที่น่าสนใจอย่างยิ่ง - ข้อยกเว้น ในตอนนั้น เมื่อนักวิทยาศาสตร์รุ่นเยาว์และโปรแกรมเมอร์ตื่นเต้นกับหัวข้อนี้อย่างมาก... - ขอโทษนะ ฉันต้องไปห้องแล็บ นี่คือเอกสารประกอบการบรรยาย ฉันคิดว่าคุณจะคิดออกเอง ที่นี่: ข้อยกเว้น Java (เอกสาร Oracle) การจัดการข้อยกเว้นใน Java (จุด T ของ Java) Java - การจัดการข้อยกเว้น (จุดสอน) การจัดการข้อยกเว้น Java ขั้นพื้นฐาน10 ฮูลิโอ
- Amigo คุณคิดอย่างไรกับบทเรียนวันนี้ สมองโพซิตรอนของคุณยังไม่ทำงานหรือไม่? งานของดิเอโกก็เพียงพอแล้วที่จะทำให้ทุกคนเหนื่อยหน่าย ดื่มเบียร์และผ่อนคลายกันเถอะ คุณยังยืนอยู่ไหม11 กัปตันกระรอก
- สวัสดีทหาร! - สวัสดีตอนเช้าครับท่าน! - ฉันมีข่าวที่ยอดเยี่ยมสำหรับคุณ นี่คือการตรวจสอบอย่างรวดเร็วเพื่อเสริมสร้างทักษะของคุณ ทำทุกวันและคุณจะเพิ่มพูนทักษะของคุณอย่างรวดเร็ว งานได้รับการออกแบบมาเป็นพิเศษให้ทำใน Intellij IDEAงานเพิ่มเติมที่ต้องทำใน Intellij Idea | |
---|---|
1 | 1. การหารด้วยศูนย์ สร้างเมธอด public static void departmentByZero()ซึ่งคุณต้องหารจำนวนใดๆ ด้วยศูนย์ และแสดงผลของการหารบนหน้าจอ รวมการเรียกเมธอด การ หารByZero() ลงใน try..catch แสดงการสืบค้นกลับของสแต็ ก ข้อยกเว้นโดยใช้เมธอดexception.printStackTrace() |
2 | 2. นับถอยหลังจาก 10 ถึง 0 เขียนลูปเพื่อนับถอยหลังจาก 10 ถึง 0 ใช้Thread.sleep(100)เพื่อหน่วงเวลา ปิด การ โทร เข้าสู่โหมดสลีป try..catch |
3 | 3. รวมเมธอดเป็น try..catch อ่านตัวเลขจากแป้นพิมพ์ เขียนรหัสสำหรับอ่านตัวเลขจากแป้นพิมพ์เป็นวิธีการที่แยกต่างหากreadData( ) รวมเนื้อหาทั้งหมดของวิธีนี้ (โค้ดทั้งหมดภายใน เมธอด readData()ยกเว้นการประกาศรายการที่จะเก็บตัวเลข) ลงในtry..catch หากผู้ใช้ป้อนข้อความแทนการป้อนตัวเลข เมธอดจะต้องตรวจจับข้อยกเว้นและแสดงหน้าจอทุกตัวเลขที่ป้อนก่อนหน้า แสดงตัวเลขที่หน้าจอ แต่ละหมายเลขควรอยู่ในบรรทัดใหม่ ลำดับของตัวเลขควรเหมือนกับที่ป้อน |
4 | 4. ตัวแปลงวัน ที่ อ่านจากแป้นพิมพ์เป็นวันที่ในรูปแบบ «08/18/2013» แสดงบนหน้าจอวันที่ในรูปแบบ «AUG 18, 2013» ใช้ วัตถุDateและSimpleDateFormat |
5 | 5. สระและพยัญชนะ เขียนโปรแกรมอ่านบรรทัดจากแป้นพิมพ์ โปรแกรมควรแสดงสองสตริงบนหน้าจอ: 1) สตริงแรกควรมีสระ 2) สตริงที่สองควรมีพยัญชนะและเครื่องหมายวรรคตอนจากข้อความที่ป้อน คั่นอักขระด้วยช่องว่าง อินพุตตัวอย่าง: หยุดดู ฟัง เอาต์พุตตัวอย่าง: oooie stplklstn |
6 | 6. นิทานเรื่องหนูน้อยหมวกแดง 1. มีห้าชั้นเรียน: หมวกแดง, คุณยาย, ขนมพาย, คนตัดไม้, หมาป่า 2. แต่ละคลาสมีสองฟิลด์ ประเภท ArrayList : ฆ่าและกิน 3. มีการสร้างวัตถุที่จำเป็นแล้ว (กระโปรง, ยาย, ... ) 4. สร้างความสัมพันธ์ที่ถูกต้อง (ใครกินและฆ่าใคร) เพื่อรับตรรกะของ «หนูน้อยหมวกแดง» |
7 | 7. ย้ายการแก้ไขแบบคงที่ ย้ายตัวดัดแปลงแบบคงที่เพื่อให้โค้ดคอมไพล์ |
8 | 8. รายการอาร์เรย์ของตัวเลข สร้างรายการที่มีองค์ประกอบเป็นอาร์เรย์ของตัวเลข เพิ่มอาร์เรย์วัตถุห้ารายการที่มีความยาว 5, 2, 4, 7, 0 ตามลำดับ เติมอาร์เรย์ด้วยข้อมูลใด ๆ และแสดงบนหน้าจอ |
9 | 9. สิบแมว สร้างคลาส Catด้วยฟิลด์ชื่อ สตริง สร้างพจนานุกรมMap<String, Cat>เพิ่มแมว 10 ตัวในโมเดล «ชื่อ» - «แมว» ได้จากแผนที่ชุดชื่อและแสดงชุดที่หน้าจอ |
งานโบนัส | |
---|---|
1 | 1. โปรแกรมไม่คอมไพล์และรัน ซ่อมมัน. งาน:โปรแกรมควรอ่านชื่อไฟล์สองไฟล์จากแป้นพิมพ์ และคัดลอกไฟล์แรกไปยังตำแหน่งที่ระบุโดยชื่อที่สอง |
2 | 2. เพิ่มฟังก์ชั่นใหม่ให้กับโปรแกรม งานเก่า:โปรแกรมควรอ่านชื่อไฟล์สองไฟล์จากแป้นพิมพ์และคัดลอกไฟล์แรกไปยังตำแหน่งที่ระบุโดยชื่อที่สอง งานใหม่:โปรแกรมควรอ่านชื่อไฟล์สองไฟล์จากแป้นพิมพ์และคัดลอกไฟล์แรกไปยังตำแหน่งที่ระบุโดยชื่อที่สอง หากไม่มีไฟล์ (ที่จะคัดลอก) ที่มีชื่อที่ระบุ โปรแกรมควรแสดงข้อความ «ไม่มีไฟล์» และพยายามอ่านชื่อไฟล์จากคอนโซลอีกครั้งก่อนที่จะอ่าน ชื่อของไฟล์ที่สอง (ปลายทาง) |
3 | 3. การเรียนรู้และฝึกฝนอัลกอริทึม อ่านรายการคำและตัวเลขจากแป้นพิมพ์ แสดงคำบนหน้าจอตามลำดับจากน้อยไปหามาก และตัวเลขตามลำดับจากมากไปน้อย ตัวอย่างอินพุต: เชอร์รี่ 1 ถั่ว 3 แอปเปิ้ล 2 0 แตงโม ตัวอย่างเอาต์พุต: แอปเปิล 3 ถั่ว 2 เชอร์รี่ 1 0 แตงโม |
GO TO FULL VERSION