Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 7 years ago

Java method问题

Complete the following program by supplying definitions for the missing methods.

When the program runs without error, the output should be ed12.

public class IntClass implements Incrementable

{

private int myN;

public IntClass( int n )

{

myN = n;

}

public int getN()

{

return myN;

}

public String toString()

{

return "" + myN;

}

// write additional methods here

这里填

}

public class MainClass

{

public static void main( String[] args )

{

ArrayList<Incrementable> list = new ArrayList<Incrementable>();

list.add( new StringIndex( "fred" ) );

list.add( new IntClass( 10 ) );

// increment elements of list

for ( int j = 0 ; j < 2 ; j++ )

{

for ( Incrementable r : list )

r.increment();

}

for ( Incrementable r : list )

System.out.print( r );

}

}

2 Answers

Rating
  • sponge
    Lv 6
    7 years ago
    Favorite Answer

    您的程式缺的應該是 void increment() 的實作

    這方法必須為公開,才能在 MainClass 調用

    根據提示輸出為 ed12, 10 經過 increment() 後變 12

    所以實作如下:

    public void increment()

    {

    myN += 2;

    }

    不過您代碼仍有些東西未定義

    比如 import 哪些項目,以及單一檔案無法兩個 public class

    所以應該完整代碼不只這些,在下只針對題目要求填寫處回答

    希望如上回答對您有幫助!

    註:這次請別刪除問題

    2014-02-05 11:04:05 補充:

    千萬別填 myN=12 在 increment()

    雖然也能正確輸出,但語意上不對

    2014-02-05 15:49:17 補充:

    真抱歉,早上打回答的時候眼殘,加上初學者編輯介面貼的代碼排版都不好,就寫錯了...多謝指正

    2014-02-05 17:26:51 補充:

    應該是

    void increment()

    {

    myN++;

    }

    2014-02-06 03:30:50 補充:

    為了回答完整性,在下仍補齊應有的敘述

    for(int j=0; j<2; j++) 且 for(Incrementable r : list)

    表示「list 內每個元素都要遞增兩次」

    2014-02-06 03:34:32 補充:

    而題目已經說明,正確結果為 ed12

    恰好是 fred 與 10 遞增兩次

    fred 的 StringIndex 原本為 0 (f), 遞增二次以後在 2 (e)

    10 遞增二次以後便成 12

    所以每回合進入 method 只要 ++ 而非之前的 +=2

  • John
    Lv 7
    7 years ago

    spong, 妳錯了,這條問題好深,出題目的人好有腦。這是一個好好的問題。同教材。首先唔可以一次加二,只能加一。因為for...loop要行二次,每次會加一。其次要做同一樣於StringIndeximport java.util.ArrayList;

    public class MainClass {

    public static void main(String[] args) {

    ArrayList<Incrementable> list = new ArrayList<Incrementable>();

    list.add(new StringIndex("fred"));

    list.add(new IntClass(10));

    // increment elements of list

    for (int j = 0; j < 2; j++) {

    for (Incrementable r : list)

    r.increment();

    }

    for (Incrementable r : list)

    System.out.print(r);

    }

    }

    interface Incrementable {

    void increment();

    }

    class IntClass implements Incrementable {

    private int myN;

    public IntClass(int n) {

    myN = n;

    }

    public int getN() {

    return myN;

    }

    public String toString() {

    return "" + myN;

    }

    @Override

    public void increment() {

    this.myN++;

    }

    }

    class StringIndex implements Incrementable {

    private String value;

    private int idx = 0;

    public StringIndex(String value) {

    this.value = value;

    }

    @Override

    public void increment() {

    this.idx++;

    }

    @Override

    public String toString() {

    return value.substring(idx);

    }

    }

Still have questions? Get your answers by asking now.