คำถามติดแท็ก java

Java เป็นภาษาการเขียนโปรแกรมเชิงวัตถุในระดับสูงที่พัฒนาโดย Sun Microsystems ปัจจุบัน Java เป็นเจ้าของโดย Oracle ซึ่งซื้อ Sun ในปี 2010

2
StackOverflowError ใน Java หรือไม่?
ฉันเคยคิดว่ามันไม่ได้ แต่เมื่อวานนี้ฉันต้องทำ มันเป็นแอพพลิเคชั่นที่ใช้Akka (ระบบการทำงานของนักแสดงสำหรับ JVM) เพื่อประมวลผลงานอะซิงโครนัส หนึ่งในนักแสดงทำการจัดการไฟล์ PDF บางส่วนและเนื่องจากห้องสมุดมีรถบั๊กมันก็ตายด้วยStackOverflowErrorทุก ๆ คราว ด้านที่สองคือ Akka ได้รับการกำหนดค่าให้ปิดระบบนักแสดงทั้งหมดหากมีข้อผิดพลาดร้ายแรง JVM (เช่น StackOverflowError) ประเด็นที่สามคือระบบนักแสดงนี้ถูกฝังอยู่ภายในเว็บแอพ (สำหรับ WTF-ish, มรดก, เหตุผล) ดังนั้นเมื่อระบบนักแสดงปิดตัวลงแอปพลิเคชันเว็บจะไม่ ผลกระทบสุทธิคือในStackOverflowErrorแอปพลิเคชันการประมวลผลงานของเรากลายเป็นเพียงเว็บแอปที่ว่างเปล่า การแก้ไขอย่างรวดเร็วฉันต้องจับStackOverflowErrorการโยนเพื่อให้กลุ่มเธรดของระบบนักแสดงไม่ฉีกขาด นี่ทำให้ฉันคิดว่าบางทีมันก็โอเคที่จะจับข้อผิดพลาดโดยเฉพาะอย่างยิ่งในบริบทเช่นนี้? เมื่อใดที่มีเธรดพูลกำลังประมวลผลงานตามอำเภอใจ? ซึ่งแตกต่างจากOutOfMemoryErrorฉันไม่สามารถจินตนาการว่าStackOverflowErrorสามารถออกจากโปรแกรมที่อยู่ในสถานะที่ไม่สอดคล้องกัน สแต็กจะถูกล้างหลังจากข้อผิดพลาดดังกล่าวดังนั้นการคำนวณจึงสามารถดำเนินต่อได้ตามปกติ แต่บางทีฉันอาจพลาดสิ่งสำคัญไป นอกจากนี้ขอให้สังเกตว่าฉันทั้งหมดเพื่อแก้ไขข้อผิดพลาดในสถานที่แรก (ตามความเป็นจริงฉันได้แก้ไข SOE ในแอพเดียวกันนี้เมื่อไม่กี่วันที่ผ่านมา) แต่ฉันไม่รู้จริง ๆ ว่าเมื่อใด สถานการณ์แบบนี้อาจเกิดขึ้นได้ เหตุใดจึงเป็นการดีกว่าที่จะเริ่มกระบวนการ JVM ใหม่แทนการจับStackOverflowErrorทำเครื่องหมายว่างานนั้นล้มเหลวและดำเนินธุรกิจของฉันต่อไป มีเหตุผลที่น่าสนใจไหมที่จะไม่ใช้ SOE? ยกเว้น "แนวปฏิบัติที่ดีที่สุด" ซึ่งเป็นคำที่คลุมเครือซึ่งไม่ได้บอกอะไรเลย

5
การเขียนโปรแกรมใน Python เร็วกว่าใน C, C ++ หรือ Java หรือไม่? [ปิด]
มีความเชื่ออย่างกว้างขวางในหมู่โปรแกรมเมอร์ว่ายิ่งภาษามีพลวัตและพิมพ์ผิดมากเท่าไรโปรแกรมเมอร์ก็ยิ่งมีประสิทธิผลมากขึ้นเท่านั้น Guido van Rossum เขียนเกี่ยวกับประสิทธิภาพการเขียนโปรแกรมโดยใช้ python ในปี 1998และค้นหาในเว็บฉันยังเห็นผู้คนที่อ้างสิทธิ์นี้: วากยสัมพันธ์รหัสหลามดูเหมือนว่ารหัสหลอกที่ปฏิบัติการได้ การพัฒนาโปรแกรมโดยใช้ Python เร็วกว่าการใช้ C / C ++ 5-10 เท่าและเร็วกว่าการใช้ Java 3-5 เท่า ในหลายกรณีต้นแบบของแอปพลิเคชันสามารถเขียนใน Python โดยไม่ต้องเขียนโค้ด C / C ++ / Java ใด ๆ บ่อยครั้งที่ต้นแบบมีฟังก์ชั่นเพียงพอและทำงานได้ดีพอที่จะส่งมอบเป็นผลิตภัณฑ์สุดท้ายประหยัดเวลาในการพัฒนาอย่างมาก ในบางครั้งต้นแบบสามารถแปลบางส่วนหรือทั้งหมดเป็น C ++ หรือ Java - Python เป็นวัตถุเชิงธรรมชาติทำให้การแปลเป็นกระบวนการที่ตรงไปตรงมา ปัญหานี้ได้รับการประเมินทางวิทยาศาสตร์อย่างเหมาะสมหรือไม่? ถ้าไม่ใช่สำหรับไพ ธ อนบางทีสำหรับภาษาสคริปต์พี่น้องอย่างruby , perlหรือphp ? ฉันไม่ได้มองหาการหาเหตุผลเข้าข้างตนเองการเปรียบเทียบหรือคำอธิบายว่าทำไมมันอาจจะตอบยากถ้ามันเป็นความเห็นของนักวิจัยหรือผู้เชี่ยวชาญที่ใช้เวลาในการพิจารณาปัญหา ตอนแรกฉันถามคำถามนี้ที่skeptics.SEและมีคนแนะนำว่าฉันควรถามที่นี่ด้วย

5
ฉันต้องการเริ่มใช้ TDD มีเคล็ดลับสำหรับผู้เริ่มต้นไหม? [ปิด]
ฉันไม่เคยใช้กลไกทดสอบอัตโนมัติในโครงการใด ๆ ของฉันและฉันรู้สึกว่าขาดอะไรมากมาย ฉันต้องการปรับปรุงตัวเองดังนั้นฉันจึงต้องเริ่มแก้ไขปัญหาบางอย่างที่ฉันละเลยไปเช่นนี้และลองใช้ Git แทนที่จะติดอยู่ที่ SVN เป็นวิธีที่ดีในการเรียนรู้ TDD อะไร ฉันอาจจะใช้ Eclipse เพื่อเขียนโปรแกรมใน Java ฉันเคยได้ยิน JUnit แล้ว แต่ฉันไม่รู้ว่าควรพิจารณาเรื่องอื่นอีกไหม

2
ฉันจะดีบัก JSP ได้อย่างไร
ฉันพยายามแก้ไข JSP สำหรับโครงการและฉันได้รับ NullPointerException ที่ไหนสักแห่งใน JSP เมื่อได้รับการร้องขอจากเซิร์ฟเวอร์ของฉัน เว็บเซิร์ฟเวอร์ของฉัน (JBoss) กำลังรายงานข้อยกเว้น แต่ให้หมายเลขบรรทัดปลอม มีการรายงานว่ามีข้อยกเว้นเกิดขึ้นที่บรรทัด 702 แต่ JSP ของฉันมีความยาวเพียง 146 บรรทัดดังนั้นฉันจึงไม่สามารถระบุว่าสายใดสำลัก เทคนิคที่ดีในการแก้ไขข้อผิดพลาดใน JSP มีอะไรบ้าง ฉันใช้ IntelliJ 9 Ultimate เป็น IDE ของฉัน ขอบคุณ
26 java  ide  debugging  jsp  intellij 

7
มีวิธีปฏิบัติสำหรับโครงสร้างโหนดที่เชื่อมโยงที่จะไม่เปลี่ยนรูป?
ฉันตัดสินใจเขียนรายการที่ลิงก์เดี่ยว ๆ และมีแผนที่จะทำให้โครงสร้างโหนดเชื่อมโยงภายในไม่เปลี่ยนรูป ฉันวิ่งเข้าไปในอุปสรรค์ ว่าฉันมีโหนดเชื่อมโยงต่อไปนี้ (จากaddการดำเนินการก่อนหน้า): 1 -> 2 -> 3 -> 4 5และบอกว่าผมต้องการที่จะผนวก การทำเช่นนี้ตั้งแต่โหนด4จะไม่เปลี่ยนรูปฉันต้องสร้างสำเนาใหม่ของ4แต่แทนที่ของสนามใหม่ที่มีโหนดnext 5ปัญหาคือตอนนี้3กำลังอ้างอิงเก่า4; 5หนึ่งโดยไม่ต้องต่อท้าย ตอนนี้ฉันต้องการคัดลอก3และแทนที่nextฟิลด์เพื่ออ้างอิง4สำเนา แต่ตอนนี้2กำลังอ้างอิงเก่า3... หรือกล่าวอีกนัยหนึ่งเมื่อต้องการต่อท้ายรายการทั้งหมดจะต้องคัดลอก คำถามของฉัน: ความคิดของฉันถูกต้องหรือไม่ มีวิธีการผนวกโดยไม่คัดลอกโครงสร้างทั้งหมดหรือไม่ เห็นได้ชัดว่า "จาวาที่มีประสิทธิภาพ" มีคำแนะนำ: คลาสควรจะไม่เปลี่ยนรูปเว้นแต่จะมีเหตุผลที่ดีมากที่ทำให้พวกเขาเปลี่ยนแปลงได้ ... นี่เป็นกรณีที่ดีสำหรับการเปลี่ยนแปลงหรือไม่? ฉันไม่คิดว่านี่เป็นคำตอบที่ซ้ำกันเนื่องจากฉันไม่ได้พูดถึงรายการ เห็นได้ชัดว่าจะต้องมีการเปลี่ยนแปลงเพื่อให้สอดคล้องกับอินเทอร์เฟซ (โดยไม่ต้องทำอะไรบางอย่างเช่นการรักษารายการใหม่ภายในและดึงมันออกมาผ่านทะเยอทะยานในความคิดที่สองแม้ว่าแม้จะต้องมีการกลายพันธุ์; ฉันกำลังพูดถึงว่า internals ของรายการจะต้องไม่เปลี่ยนรูป

3
ทำไมตัวชี้โมฆะแทนการส่งคลาส
ใน Java: int count = (Integer) null; พ่น java.lang.NullPointerException เหตุใดจึงไม่โยนข้อยกเว้น Class Cast เพื่อความสะดวกในการทำความเข้าใจโปรแกรมเมอร์ เหตุใดจึงเลือกข้อยกเว้นนี้นอกเหนือจากข้อยกเว้นอื่น ๆ

4
เหตุใด C ++ และ Java ทั้งสองจึงใช้แนวคิดของ“ การอ้างอิง” แต่ไม่เข้าใจ
ใน C ++ อาร์กิวเมนต์การอ้างอิงไปยังฟังก์ชันอนุญาตให้ฟังก์ชันทำการอ้างอิงถึงสิ่งอื่น: int replacement = 23; void changeNumberReference(int& reference) { reference = replacement; } int main() { int i = 1; std::cout << "i=" << i << "\n"; // i = 1; changeNumberReference(i); std::cout << "i=" << i << "\n"; // i = 23; } อะนาล็อกอาร์กิวเมนต์อ้างอิงคงที่ไปยังฟังก์ชันจะแสดงข้อผิดพลาดเวลารวบรวมถ้าเราพยายามเปลี่ยนการอ้างอิง: void changeNumberReference(const …
26 java  c++  pointers  reference 

6
ทำไม Java ถึงทำให้ค่าเริ่มต้นการเข้าถึงแพคเกจ?
ฉันถามคำถามนี้เพราะฉันเชื่อว่าพวกเขาทำมันด้วยเหตุผลที่ดีมากและคนส่วนใหญ่ไม่ได้ใช้อย่างถูกต้องดีจากประสบการณ์ในอุตสาหกรรมจนถึงตอนนี้ แต่ถ้าทฤษฎีของฉันเป็นจริงฉันก็ไม่แน่ใจว่าทำไมพวกเขาถึงรวมตัวแก้ไขการเข้าถึงส่วนตัว ... ? ฉันเชื่อว่าหากใช้การเข้าถึงเริ่มต้นอย่างเหมาะสมจะช่วยเพิ่มความสามารถในการทดสอบในขณะที่ยังคงการห่อหุ้ม และยังทำให้ตัวแก้ไขการเข้าถึงส่วนตัวซ้ำซ้อน ตัวดัดแปลงการเข้าถึงเริ่มต้นสามารถใช้เพื่อให้ผลกระทบแบบเดียวกันโดยใช้แพคเกจเฉพาะสำหรับวิธีการที่ต้องซ่อนจากส่วนอื่น ๆ ของโลกและทำได้โดยไม่กระทบต่อความสามารถในการทดสอบเป็นแพคเกจในโฟลเดอร์ทดสอบ สามารถเข้าถึงวิธีการเริ่มต้นทั้งหมดที่ประกาศในโฟลเดอร์ต้นทาง ฉันเชื่อว่านี่เป็นสาเหตุที่ Java ใช้การเข้าถึงแพคเกจเป็น 'ค่าเริ่มต้น' แต่ฉันไม่แน่ใจว่าทำไมพวกเขาถึงรวมการเข้าถึงส่วนตัวฉันแน่ใจว่ามีกรณีการใช้ที่ถูกต้อง ...

5
อินสแตนซ์อาจเท่ากับอินสแตนซ์อื่นที่เป็นประเภทเฉพาะเจาะจงมากกว่าหรือไม่
ฉันได้อ่านบทความนี้: วิธีการเขียนวิธีที่เท่าเทียมกันในชวา โดยพื้นฐานแล้วจะมีวิธีแก้ปัญหาสำหรับวิธีเท่ากับ () ที่รองรับการสืบทอด: Point2D twoD = new Point2D(10, 20); Point3D threeD = new Point3D(10, 20, 50); twoD.equals(threeD); // true threeD.equals(twoD); // true แต่มันเป็นความคิดที่ดี? อินสแตนซ์ทั้งสองนี้ดูเหมือนจะเท่ากัน แต่อาจมีรหัสแฮชที่แตกต่างกันสองแบบ ไม่ผิดหรอกเหรอ? ฉันเชื่อว่าสิ่งนี้จะสำเร็จได้ดีกว่าโดยการคัดเลือกตัวถูกดำเนินการแทน
25 java  c#  scala  comparison 

2
Java: ทำไมคอลเลกชันถึงรับตัวเปรียบเทียบ แต่ไม่ใช่ (สมมุติ) Hasher and Equator?
ปัญหานี้ชัดเจนที่สุดเมื่อคุณมีการใช้อินเทอร์เฟซที่แตกต่างกันและสำหรับวัตถุประสงค์ของคอลเลกชันเฉพาะคุณสนใจเฉพาะมุมมองระดับอินเทอร์เฟซของวัตถุ ตัวอย่างเช่นสมมติว่าคุณมีอินเทอร์เฟซเช่นนี้: public interface Person { int getId(); } วิธีปกติในการใช้งานhashcode()และequals()ในชั้นเรียนการใช้งานจะมีรหัสดังนี้ในequalsวิธี if (getClass() != other.getClass()) { return false; } นี้ทำให้เกิดปัญหาเมื่อคุณผสมการใช้งานในPerson HashMapหากมีHashMapเพียงคนเดียวที่ใส่ใจเกี่ยวกับมุมมองระดับอินเตอร์เฟสของPersonมันก็อาจจบลงด้วยการซ้ำที่แตกต่างกันเฉพาะในชั้นเรียนของพวกเขาใช้งาน คุณสามารถทำให้กรณีนี้ทำงานโดยใช้วิธีการแบบเดียวกันequals()สำหรับการใช้งานทั้งหมด แต่คุณเสี่ยงต่อการequals()ทำสิ่งที่ผิดในบริบทที่แตกต่างกัน (เช่นการเปรียบเทียบสองPersons ที่สำรองข้อมูลโดยบันทึกฐานข้อมูลที่มีหมายเลขรุ่น) สัญชาตญาณของฉันบอกฉันว่าควรกำหนดความเสมอภาคต่อการรวบรวมแทนที่จะเป็นแบบต่อชั้นเรียน เมื่อใช้คอลเลกชันที่พึ่งพาการสั่งซื้อคุณสามารถใช้แบบกำหนดเองComparatorเพื่อเลือกลำดับที่ถูกต้องในแต่ละบริบท ไม่มีอะนาล็อกสำหรับคอลเล็กชันที่ใช้แฮช ทำไมนี้ คำถามนี้แตกต่างจาก " Why is .compareTo () ในส่วนติดต่อในขณะที่. equals () อยู่ในคลาสใน Java? " เพราะเกี่ยวข้องกับการใช้งานคอลเลกชัน compareTo()และequals()/ hashcode()ทั้งสองประสบปัญหาสากลเมื่อใช้คอลเลกชัน: คุณไม่สามารถเลือกฟังก์ชั่นการเปรียบเทียบที่แตกต่างกันสำหรับคอลเลกชันที่แตกต่างกัน ดังนั้นสำหรับวัตถุประสงค์ของคำถามนี้ลำดับชั้นการสืบทอดของวัตถุไม่สำคัญเลย สิ่งที่สำคัญคือฟังก์ชันการเปรียบเทียบถูกกำหนดต่อวัตถุหรือต่อการรวบรวม
25 java  collections 

5
เหตุใดการเขียนบางสิ่งในภาษา X จึงไม่ดีราวกับว่าคุณกำลังเขียนโปรแกรมในภาษา Y ในแง่ของการใช้กระบวนทัศน์การเข้ารหัสที่ใช้ร่วมกัน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ไม่นานมานี้ฉันถามคำถามเกี่ยวกับ SO เกี่ยวกับสิ่งที่เขียนใน C ++ แต่แทนที่จะได้รับคำตอบสำหรับปัญหาที่เกิดขึ้นความคิดเห็นต่าง ๆ ก็บ้าไปตามสไตล์การเขียนโค้ดของฉันแม้ว่าฉันจะระบุว่ามันเป็นรหัสWIPและฉันตั้งใจจะล้างมันในภายหลังเมื่อฉันใช้เคสพื้นฐาน (ฉันได้รับคะแนนเสียงลงมากที่ฉันตัดสินใจที่จะดึงคำถามเนื่องจากตัวแทนของฉันดังนั้นแล้วอยู่ใกล้สุดซึ้ง) มันทำให้ฉันสงสัยว่าทำไมผู้คนถึงยอมรับทัศนคติที่ว่า "คุณเป็นโนบ ฉันถูกกล่าวหาว่าเขียน C ++ เหมือนกับว่าเป็น Java สิ่งที่ฉันไม่เข้าใจและยังทำให้ฉันงุนงง ฉันได้รับการเขียนโปรแกรมในภาษา OOP ไม่กี่ปีที่ผ่านมาในขณะนี้แม้ในช่วงเวลา ฉันเลือกภาษาที่จะใช้ในแง่ของไลบรารีที่มีอยู่และสภาพแวดล้อมการดำเนินการที่ดีที่สุดสำหรับงานในมือ ฉันนำรูปแบบการออกแบบมาใช้ในรหัส OOP และฉันค่อนข้างมั่นใจว่าการใช้รูปแบบของฉันนั้นฟังดูดีและ OO ที่ชาญฉลาดฉันสามารถมีรูปแบบของตัวเองได้ ฉันเข้าใจกล่องเครื่องมือของ OOP แต่เลือกที่จะใช้เครื่องมือเฉพาะเมื่อฉันคิดว่าเป็นสิ่งจำเป็นจริงๆไม่ใช่เพื่อใช้เคล็ดลับที่ประณีตเพื่อแสดงการเข้ารหัสของฉัน (ซึ่งฉันรู้ว่าไม่ใช่รอยบนสุด แต่ฉันคิดว่าไม่อยู่ในระดับ n00b เช่นกัน) ฉันออกแบบรหัสของฉันก่อนที่ฉันจะเขียนบรรทัดเดียว ในการกำหนดการทดสอบฉันทำรายการเป้าหมายของชั้นเรียนหนึ่ง ๆ และเกณฑ์การทดสอบที่ต้องปฏิบัติตาม เพราะฉันจะสร้างไดอะแกรมลำดับและเขียนรหัสได้ง่ายขึ้นฉันเลือกที่จะเขียนการทดสอบหลังจากที่อินเทอร์เฟซกลายเป็นที่ชัดเจน ฉันต้องยอมรับว่าในส่วนของรหัสที่ฉันโพสต์ในคำถามฉันยังคงใช้พอยน์เตอร์แทนการใช้สมาร์ทพอยน์เตอร์ ฉันใช้ RAII ทุกครั้งที่ทำได้ ฉันรู้ว่า …

4
ทำไม Java ไม่ใช้การห่อหุ้มด้วยคลาสบางคลาส?
คำถามของฉันเกี่ยวข้องกับSystem.inและSystem.outชั้นเรียน (อาจมีคนอื่น ๆ เช่นที่อยู่ในไลบรารีมาตรฐาน) ทำไมถึงเป็นอย่างนั้น? นั่นเป็นวิธีปฏิบัติที่ไม่ดีใน OOP ใช่หรือไม่ ไม่ควรใช้เช่น: System.getIn()และSystem.getOut()? ฉันมีคำถามนี้มาตลอดและหวังว่าฉันจะหาคำตอบที่ดีได้ที่นี่

5
วิธีการเลือกระหว่างบอกไม่ถามและแยกคำสั่ง?
หลักการบอกว่าอย่าถามว่า: คุณควรพยายามบอกสิ่งที่คุณต้องการให้พวกเขาทำ อย่าถามพวกเขาเกี่ยวกับสถานะของพวกเขาตัดสินใจแล้วบอกพวกเขาว่าจะทำอย่างไร ปัญหาคือในฐานะผู้โทรคุณไม่ควรทำการตัดสินใจตามสถานะของวัตถุที่เรียกว่าทำให้คุณเปลี่ยนสถานะของวัตถุ ตรรกะที่คุณใช้อยู่อาจเป็นความรับผิดชอบของวัตถุที่เรียกว่าไม่ใช่ของคุณ สำหรับคุณในการตัดสินใจนอกวัตถุที่ละเมิดการห่อหุ้ม ตัวอย่างง่ายๆของ "Tell, Don't Ask"คือ Widget w = ...; if (w.getParent() != null) { Panel parent = w.getParent(); parent.remove(w); } และเวอร์ชัน Tell คือ ... Widget w = ...; w.removeFromParent(); แต่ถ้าฉันต้องรู้ผลลัพธ์จากวิธี removeFromParent ปฏิกิริยาแรกของฉันคือเพียงแค่เปลี่ยน removeFromParent เพื่อส่งกลับค่าบูลีนเพื่อระบุว่าพาเรนต์ถูกลบหรือไม่ แต่ฉันเจอรูปแบบการแยกคำสั่งซึ่งบอกว่าไม่ต้องทำ มันระบุว่าทุกวิธีควรเป็นคำสั่งที่ทำการดำเนินการหรือแบบสอบถามที่ส่งคืนข้อมูลไปยังผู้โทร แต่ไม่ใช่ทั้งสองอย่าง กล่าวอีกนัยหนึ่งการถามคำถามไม่ควรเปลี่ยนคำตอบ อย่างเป็นทางการมากขึ้นวิธีการที่ควรส่งกลับค่าเฉพาะในกรณีที่พวกเขามีความโปร่งใส referential และจึงไม่มีผลข้างเคียง สองคนนี้ขัดแย้งกันจริงๆและฉันจะเลือกระหว่างคนทั้งสองได้อย่างไร ฉันจะไปกับ Pragmatic Programmer …
25 java  coding 

17
มีการมอบหมายที่ดีอะไรบ้างสำหรับหลักสูตรเบื้องต้นเพื่อเข้าถึงนักเรียนปัจจุบัน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นระยะสอนเบื้องต้นเกี่ยวกับการเขียนโปรแกรมการเรียนการสอนโดยใช้ Java ฉันต้องการให้นักเรียนของฉันบางอย่างที่น่าตื่นเต้นที่ได้รับมอบหมายว่าพวกเขาสามารถที่เกี่ยวข้องกับหรือพบที่น่าสนใจ อย่างน้อยที่สุดฉันต้องการมอบหมายที่เหมาะสมและมีการทำงานร่วมกันภายใน (ตัวอย่างเช่นแบบฝึกหัดการเขียนโปรแกรมที่แย่มาก ๆ ดูเหมือนจะถูกวางแผนเพื่อให้คุณต้องใช้โครงสร้างการเขียนโปรแกรมที่ครอบคลุมล่าสุด) เพื่อให้แนวคิดเกี่ยวกับขอบเขตของคุณนี่คือสิ่งที่ครอบคลุม : การมอบหมายต้องเป็นภาษาจาวาโดยใช้ไลบรารีภายนอกบางอันสามารถทำได้ แต่จะต้องเป็น API แบบง่ายและไม่ใช่เฟรมเวิร์กแบบเต็ม ตัวแปรดั้งเดิมและสตริง อินพุตและเอาต์พุตคอนโซล if, for,while ตัวดำเนินการทางคณิตศาสตร์และตรรกะ กราฟิกที่เรียบง่ายด้วยการวาดเส้นและรูปร่าง วิธีการคงที่ อาร์เรย์หนึ่งมิติ นักเรียนจะไม่เข้าสู่หัวข้อขั้นสูง (เช่นไม่มีการเรียกซ้ำไม่มีการเน้นเรื่องมรดก) ดังนั้นฉันไม่ได้มองหาโครงการที่ซับซ้อน: "ให้พวกเขาเขียนคอมไพเลอร์ C ฉันทำมันเมื่อฉันอายุ 5 ขวบและเป็นวิธีเดียวที่ฉันเรียนรู้!" หากคุณมีแนวคิดที่สูงกว่าขอบเขตโปรดโพสต์ไว้ในคำถาม "ท้าทาย" ที่ลิงก์ด้านล่างและไม่ใช่แนวคิดนี้ สิ่งที่ฉันกำลังมองหาคือแนวคิดที่น่าสนใจที่สามารถทำได้ในโปรแกรมระยะสั้น ตัวอย่างเช่น: นักเรียนสามารถเขียนรุ่นคอนโซลของ"Star Wars ชื่อ" เครื่องกำเนิดไฟฟ้า นี่คือการอ่าน Strings และการใช้อย่างมีประสิทธิภาพsubstringแต่ฉันคิดว่ามันสนุก การเปลี่ยนแปลงที่คล้ายกันจะเป็นโปรแกรม " …

14
ทำไมเราถึงเรียน Java ที่มหาวิทยาลัย? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Java มักพบในสถาบันการศึกษา อะไรคือเหตุผลเบื้องหลัง
25 java 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.