Tags:

public static void detectRepairPilla (int ch;)
{
int ch =0;

if (beepersPresent())
{
 ch = 1;
 sPilla (int ch);
}

}

public void sPilla (int ch)
if (ch==0)
{
repair();
}
}

มือใหม่หัด java ครับ พยายามสร้าง Detect Pilla เพื่อให้ check ว่ามี object Beepers ในแถวหรือไม่
ตัวหุ่นจะวิ่งขึ้นหนึ่งรอบ ลงหนึ่งรอบ
มีคลาส runUp runDown แยกกัน
runUp จะเป็นการตรวจสอบแถวอย่างเดียว
แล้วส่งค่า 0/1 ไปให้ runDown พิจารณาว่าต้องทำการวางวัตถุเพื่อซ่อมแซม Pillar หรือไม่

ผมพยายามส่ง arguments แล้ว error แดงเต็มเลยครับ

Get latest news from Blognone
By: kajokman
ContributorAndroidIn Love
on 27 April 2012 - 23:33 #413492
kajokman's picture

static method เรียก non-static method ไม่ได้ครับ

แก้ง่ายสุดให้ detectRepairPillar เป็น non-static

public void detectRepairPilla(......

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 27 April 2012 - 23:45 #413494 Reply to:413492
PaPaSEK's picture

ในกรณีนี้เรียกได้ครับ เพราะ non-static method ตัวนี้เป็น public ครับ
แต่มีข้อแม้ว่า static method จะทำงานถูกต้องต่อเมื่อเรียกใช้หลังจากที่ class ของ non-static ตัวนั้นถูก instantiate ขึ้นมาแล้ว (สร้างเป็น object แล้ว)

เท่าที่เห็น ... error จาก systax ครับ

  • public static void detectRepairPilla (int ch;) เอา semi-colon ออกครับ

  • sPilla (int ch); เอา int ออกครับการส่ง argument ไม่ต้องประกาศ type ครับ อีกอย่างคือตัวแปร ch ถูกประกาศไปแล้ว

  • public void sPilla (int ch) if (ch==0) { repair(); } } ยังไม่มี { เปิด block method ครับ สังเกตุได้ว่า ปิด 2 แต่เปิด 1

ปล. error message มีไว้อ่านครับ อย่าขี้เกียจอ่าน อย่าขี้เกียจแปล ผมเพิ่งแพ่นกบาลน้องในแผนกไปคนนึง เพราะมันไม่ยอมอ่าน error message

By: mr_tawan
ContributoriPhoneAndroidWindows
on 28 April 2012 - 04:07 #413557 Reply to:413494
mr_tawan's picture

แนะเพิ่มนะครับ คือ นอกจากโค๊ดจะคอมไพล์ไม่ผ่านแล้ว ผมไม่รู้ว่าไอ้พารามิเตอร์ (ของ Java จะใช้คำว่า parameter นะครับ ภาษาอื่นอาจจะเรียก argument) ch เนี่ย มันคืออะไร

ควรตั้งตัวแปรให้อ่านออกว่า ตัวแปรเนี่ยคืออะไร มีความหมายอย่างไร และควรจะเป็น noun clause ด้วย (คือเป็นคำนาม แต่อาจจะพ่วงคำคุณศัพท์เพิ่มด้วยก็ได้)

ส่วนเมธอด sPilla() ก็เหมือนกัน ผมไม่รู้ว่ามันคืออะไร s คืออะไร Pilla คืออะไร ผมเปิดdict แล้วไม่รู้ว่ามันแปลว่าอะไร (มีแต่คำว่า pillar ที่แปลว่าเสา ...) ชื่อฟังชั่นควรตั้งเป็น verb clause ครับ คืออาจจะขึ้นด้วย verb แล้วตามด้วย noun เพื่อที่จะบอกว่าเมธอดนี้คืออะไร

ถ้าส่งโค๊ดแบบนี้ไปรีวิวผมให้รีวิวไม่ผ่านนะ เพราะเรื่องชื่อนี่แหละ อย่าลืมว่าเราไม่ได้เขียนโค๊ดให้คอมไพล์เลอร์อ่าน (อย่างเดียว) นะครับ เราเขียนเพื่อให้ตัวเองอ่าน ให้โปรแกรมเมอร์คนอื่นอ่าน ดังนั้นถ้าโค๊ดที่เราเขียนเรายังอ่านไม่รู้เรื่อง โค๊ดนั้นก็ยังไม่ดีพอครับ ถึงแม้มันอาจจะทำงานถูกต้องก็ตาม


  • 9tawan.net บล็อกส่วนตัวฮับ
By: PaPaSEK
ContributorAndroidWindowsIn Love
on 28 April 2012 - 11:52 #413641 Reply to:413557
PaPaSEK's picture

ถือว่าเป็น Obfuscator ในตัวละกัน

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 28 April 2012 - 19:05 #413739 Reply to:413641

555

By: neizod
ContributorTraineeIn Love
on 29 April 2012 - 15:34 #413949 Reply to:413641
neizod's picture

เงิบเลยท่าน กำลังอ่านมันๆ อยู่แท้ๆ

By: 3000anv
iPhoneIn Love
on 28 April 2012 - 18:56 #413735

ตอนนี้ติด Error การ return ครับ ประกาศ return int ก็แล้ว ยังเป็นอยู่เลยครับ

http://i1208.photobucket.com/albums/cc375/Bobokung111/ScreenShot2555-04-28at51621PM.png

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 28 April 2012 - 19:17 #413743 Reply to:413735

ชื่อ argument ใน checkPillaNorth ซ้ำกับ ของที่เคยประกาศไว้แล้ว เปลี่ยน a เป็นอย่างอื่นซะ

screen shot ก๊อปมาไม่ครบเลยไม่รู้ แต่เอาเมาส์ไป double click ที่ error มันวิ่งไปที่บรรทัดไหนก็แก้บรรทัดนั้นแหละคับ

By: 3000anv
iPhoneIn Love
on 28 April 2012 - 20:53 #413766

แคปมาใหม่ นะครับ

http://i1208.photobucket.com/albums/cc375/Bobokung111/ScreenShot2555-04-28at74256PM.png

ต้องการทำ int a เป็น global value
ถ้าหาก BeeperPresent  
int a = 1 
เก็บค่าไว้

แล้วทีนี้ public int checkpilla south จะรับ a
มาพิสูจน์ว่า a==1 หรือไม่ เพื่อรัน method ******
พอจบกระบวนการก็จะทำให้ a=0 อีกครั้งนึง

ผมลองหาอ่านแล้วทุกที่ก็บอกแค่ให้ประกาศชนิดที่จะ return เท่านั้น

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 28 April 2012 - 23:05 #413800 Reply to:413766
PaPaSEK's picture

ผมแนะนำว่าบอกเป็นความต้องการดีกว่าครับ

เพื่อนๆ จะได้แนะนำถูก

ไม่ควรบอกว่าจะกำหนดตัวนี้เป็น int จะกำหนดตัวนี้เป็น global

อย่าง global นี่ผมใช้น้อยมากนะครับ หรือ global ที่บอกนี่หมายถึงตัวแปรระดับ class ครับ

เริ่มจากเขียนเป็น flowchart หรือ pseudo code ง่ายๆ ได้เลยครับ

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 29 April 2012 - 16:26 #413955 Reply to:413766

return คุณเอาไปไว้ในปีกกาของ if ไม่ได้ มันอาจจะไม่โดนเรียกถ้าไม่ตรงตามเงื่อนไข อีกอย่างคุณสั่ง return a=1 ไม่ได้ จะ return อะไรก็ใส่ไปอย่างเดียว จะ a หรือจะ 1

ลองเอา return 1; ไปใส่ก่อนปิดปีกกาของ method checkPillaNorth สิ

ผมว่าเรียนแบบนี้ไม่เวิร์ค เพราะคุณยังไม่มีพื้นฐาน อย่างที่บอกอ่ะคับ ไปหาหนังสือภาษาไทยง่ายๆมาลองทำตามดูก่อน ถ้าอ่านภาษาอังกฤษโดยไม่มีพื้น ไม่รู้ศัพท์แสงทางโปรแกรมมิ่งมันจะเข้าใจผิดไปกันใหญ่