Tags:

calculationEven , calculationOdd , resetValue
ต้องไปเปลี่ยน int afterValue , int currentValue ของ copyHailstone ครับ

ทีนี้คือต้อง return ทั้ง afterValue , currentValue
ผมเลยสร้างคลาส myVal ขึ้นมา กะใช้ return int afterValue , int currentValue

และก็ไม่รู้จะต้องแก้โค้ด ยังไงต่อครับ (อ่าน tutorial แล้วแต่ก็ไม่เข้าใจว่าสุดท้ายตัวแปรเดินทางยังไง มองไม่เห็นภาพครับ)

http://s1208.photobucket.com/albums/cc375/Bobokung111/?action=view&current=ScreenShot2555-06-02at124436PM.png

http://s1208.photobucket.com/albums/cc375/Bobokung111/?action=view&current=ScreenShot2555-06-02at125540PM.png

Get latest news from Blognone
By: mr_tawan
ContributoriPhoneAndroidWindows
on 2 June 2012 - 20:15 #427542
mr_tawan's picture

เอาที่เห็น ๆ เลยนะครับ ...

  1. MyVal เป็นคลาสที่มีสมาชิกสองตัวเป็น private ดังนั้นตัวแปรสองตัวนี้จะไม่มีทางที่จะถูกเข้าถึงได้จากภายนอก และในปัจจุบันก็ไม่มีการเข้าถึงจากภายในคลาสด้วย

  2. โค๊ดที่มีปัญหาคือ ฟังก์ชั่นนี้มี return type เป็น int แต่คุณไม่ได้ return ค่าอะไรกลับมา ดังนั้นมันจึงคอมไพล์ไม่ผ่านครับ

ลองทำความเข้าใจกับโค๊ดข้างล่างดูนะครับ
{syntaxhighlighter class="csharp"}

class ReturnValue
{
public value1;
public value2;

public ReturnValue()
{

}

}

class Calculation
{
public ReturnValue Calculates( int a, int b)
{
ReturnValue output = new ReturnValue();
output.value1 = a + b;
output.value2 = a * b;

    return ReturnValue;
}

public void Test()
{
    ReturnValue aValue = Calculates(50, 100);
    Consol.WriteLine("output is {0}, {1}", aValue.value1, aValue.value2);
}

}

{/syntaxhighlighter}

โค๊ดนี้จริง ๆ ก็ยังไม่ใช่โค๊ดที่ดีที่สุดนะ (มีจุดทีต้องแก้อีก) ผมยังไม่เคยลองคอมไพล์ด้วยซ้ำ อาจจะไม่ผ่านก็ได้ 555 แต่ลองดูครับ

ปล. ผมแนะนำให้คุณไปศึกษาพวก OOP ด่วนเลย
ปลล. เดี๋ยวต้องมีคนมาถามว่าทำไมไม่ใช่ struct แน่เลย 555 กลัวว่าจะไม่รู้จักเลยเอาอันที่คุ้นเคยก่อนดีกว่าน่ะ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: rulaz07
ContributoriPhoneAndroidBlackberry
on 2 June 2012 - 22:12 #427565 Reply to:427542

Test -> test ;p

By: varavut
ContributorWindows PhoneAndroidBlackberry
on 2 June 2012 - 23:25 #427589 Reply to:427565

Test น่าจะถูกแล้วนะครับ ตามธรรมเนี่ยมการตั้งชื่อ public method ของ C# จะใช้ตัวใหญ่ขึ้นต้นเสมอ ><

แต่ถ้าใช้ C# ทำแบบนี้ก็ได้นะครับ

public void Calculates( int a, int b,out int output1,out int output2) { output1 = a + b; output2 = a * b; }

ปล. แต่เจ้าของกระทู้ใช้จาวา ก็ทำตามท่าน mr_tawan ผมว่าก็ดีแล้วนะครับ

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 2 June 2012 - 23:51 #427609 Reply to:427589

ฮ่า เขียน C# ไม่เป็นอ่าา

By: mr_tawan
ContributoriPhoneAndroidWindows
on 3 June 2012 - 01:32 #427642 Reply to:427589
mr_tawan's picture

ผมดูรูปแล้ว นึกว่าเขาเขียน C# บน Visual Studio อ่ะครับ 555

จริงๆ ไม่แน่ใจว่าภาษาอะไร เอิ๊กๆ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: mix5003
AndroidUbuntuWindows
on 2 June 2012 - 20:37 #427547

return เป้น array (ไม่ชัวร์ว่าข้างล่างนี่ใช้ได้ไหมนะครับ)
{syntaxhighlighter "brush:java"}
public int[] getNum(){
//do something
return int[]{currentValue,afterValue};
}
{/syntaxhighlighter}

By: 3000anv
iPhoneIn Love
on 3 June 2012 - 03:08 #427665

เข้าใจแล้วครับ รบกวนถามเพิ่มคือ สงสัยว่า constructor ในคลาส ReturnValue มีประโยชน์ยังไง ครับ ถ้าไม่สร้างจะมีผลเสียอย่างไร

By: varavut
ContributorWindows PhoneAndroidBlackberry
on 3 June 2012 - 10:42 #427685 Reply to:427665

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

นอกจากนี่สิ่งที่ควรรู้คือใน constructor จะมีการเรียก constructor ที่ไม่รับพารามิเตอร์ของคลาสแม่โดยอัตโนมัติ หากเราไม่ได้ระบุเอาไว้