Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

JAVA方法呼叫問題[很簡單]

printTriangle(level);

這個程式碼是呼叫嗎??

public class MethodDemo {

static void printTriangle(int level) {

int i, j;

for ( i = 1; i <= level; i++) {

for ( j = 1; j <= i; j++ )

System.out.print("* ");

System.out.println();

}

}

public static void main(String[] args) {

int level = 8;

printTriangle(level);

}

}

而實體呼叫跟類別呼叫差在哪??

白話點我是初學JAVA

已更新項目:

越快越好 謝謝

2 個已更新項目:

我想問一下建構元是甚麼??

2 個解答

評分
  • Oui
    Lv 5
    1 0 年前
    最佳解答

    這是呼叫沒有錯, 且是類別呼叫, 因為被呼叫的方法是static.

    若printTriangle不是static, 則你必須先宣告一個類別為MethodDemo的變數, 然後實做這個變數, 才能呼叫printTriangle, 此稱為實體呼叫.

    例如:

    public class MethodDemo {

    public MethodDemo() { //MethodDemo 類別的建構元 (constructor)

    }

    void printTriangle(int level) { //把static拿掉

    int i, j;

    for ( i = 1; i <= level; i++) {

    for ( j = 1; j <= i; j++ )

    System.out.print("* ");

    System.out.println();

    }

    }

    public static void main(String[] args) {

    int level = 8;

    /*宣告類別為MethodDemo的變數md, 並用constructor將其初始化*/

    MethodDemo md = new MethodDemo();

    /*必須用md這個已經初始化的實體來呼叫*/

    md.printTriangle(level);

    }

    }

    2007-02-13 21:14:51 補充:

    不過靜態呼叫要加上類別名稱, 例如

    MethodDemo.printTriangle(level);

    妳的例子因為main method也是屬於MethodDemo的成員方法, 故這裡不加類別名稱也呼叫的到printTriangle, 但若是在別的類別裡呼叫printTriangle, 就最好前面加MethodDemo這個類別名稱.

    2007-02-14 00:13:59 補充:

    物件導向程式設計中, 類別是一種定義, 定義物件的屬性與方法, 而建立物件時, 就必須呼叫建構元(或叫建構方法), 來決定物件的初始狀態.例如:

    2007-02-14 00:14:29 補充:

    class A {

    int x = 0;

    int y = 0;

    /*沒有參數的建構元*/

    public A() {

    this.x = 10;

    this.y = 20;

    }

    /*有參數的建構元*/

    puclic A (int xx, int yy) {

    this.x = xx;

    this.y = yy;

    }

    2007-02-14 00:14:37 補充:

    public int add() {

    return (this.x this.y);

    }

    public int minus() {

    return (this.x - this.y);

    }

    }

    2007-02-14 00:15:26 補充:

    以上是一個簡單的Java類別.

    當我在main方法裡面要實作一個類別為A的物件a1, 而x跟y我想用他的預設值, 因此我用沒有參數的建構元實作此物件:

    A a1 = new A();

    我實作另一個類別為A的物件a2,而x跟y我想自行指定為1000和500,此時我就應使用有參數的建構元實作此一物件:

    A a2 = new A(1000, 500);

    2007-02-14 00:17:33 補充:

    a1和a2同樣都是類別為A的物件,但他們有啥不同?

    其實就是屬性x和y的值不同.

    如果我執行a1.add() 會得到 30, 執行a1.minus()會得到-10,因為a1是使用無參數的建構元建立的, 因此x = 10, y =20;

    若我執行a2.add()會得到1500, 執行a2.minus會得到500, 因為a2是使用有參數的建構元所建立的, 因此x=500, y=1000都是我用參數指定的.

    2007-02-14 00:17:43 補充:

    總之建構元是用來初始一個物件的方法, 一個類別可以有很多建構元, 名稱都一樣, 但是每種參數結構只能有一個, 例如無參數的只能有一個, 兩個整數參數的也只能有一個, 在呼叫的時候就是靠所使用的參數去區分你是呼叫哪一個建構元.

    2007-02-14 00:17:49 補充:

    這邊因為篇幅的關係只能作一個簡單的說明, 若要更詳細的說明, 我這邊推薦一個學習網站良葛格學習筆記 http://caterpillar.onlyfun.net/Gossip/index.html ,裡面可以找到很多程式語言的學習資源.Java的學習筆記在這裡:

    http://caterpillar.onlyfun.net/Gossip/JavaGossip-V...

    參考資料: Java程式設計師的我
  • 5 年前

    import java.util.Scanner;

    import java.util.Random;//program uses class Random

    public class qqq

    {

    public static void main(String[] args)

    {

    Random ran = new Random();//create random number generator for use in method rollDice

    int play = 10;

    int com = 10;

    int a=1;

    int b=1;

    int c=1;

    int d=1;

    int z=0;

    int x=0;

    while(play>=0&&com>=0)

    {

    a=ran.nextInt(5)+1;

    b=ran.nextInt(5)+1;

    c=ran.nextInt(5)+1;

    d=ran.nextInt(5)+1;

    while(a!=b &&a!=c && a!=d&&b!=c&& b!=d&&c!=d)

    {

    a=ran.nextInt(5)+1;

    b=ran.nextInt(5)+1;

    c=ran.nextInt(5)+1;

    d=ran.nextInt(5)+1;

    }

    if(a==b)

    {

    z=c+d;

    System.out.printf("%d\n",z);

    }

    if(a==c)

    {

    z=b+d;

    System.out.printf("%d\n",z);

    }

    if(a==d)

    {

    z=b+c;

    System.out.printf("%d\n",z);

    }

    if(b==c)

    {

    z=a+d;

    System.out.printf("%d\n",z);

    }

    if(b==d)

    {

    z=a+c;

    System.out.printf("%d\n",z);

    }

    if(c==d)

    {

    z=a+b;

    System.out.printf("%d\n",z);

    }

    a=ran.nextInt(5)+1;

    b=ran.nextInt(5)+1;

    c=ran.nextInt(5)+1;

    d=ran.nextInt(5)+1;

    while(a!=b &&a!=c && a!=d&&b!=c&& b!=d&&c!=d)

    {

    a=ran.nextInt(5)+1;

    b=ran.nextInt(5)+1;

    c=ran.nextInt(5)+1;

    d=ran.nextInt(5)+1;

    }

    if(a==b)

    {

    x=c+d;

    System.out.printf("%d\n",x);

    }

    if(a==c)

    {

    x=b+d;

    System.out.printf("%d\n",x);

    }

    if(a==d)

    {

    x=b+c;

    System.out.printf("%d\n",x);

    }

    if(b==c)

    {

    x=a+d;

    System.out.printf("%d\n",x);

    }

    if(b==d)

    {

    x=a+c;

    System.out.printf("%d\n",x);

    }

    if(c==d)

    {

    x=a+b;

    System.out.printf("%d\n",x);

    }

    if(z>x)

    {

    play=play-z;

    com=com+z;

    System.out.printf("com:%d\n",com);

    System.out.printf("play:%d\n",play);

    }

    if(x>z)

    {

    play=play+x;

    com=com-x;

    System.out.printf("com:%d\n",com);

    System.out.printf("play:%d\n",play);

    }

    }

    }

    }

還有問題?馬上發問,尋求解答。