2015-09-24 56 views
1

根據學校的練習,我應該在'woordenNaarLijst'方法中更新後,打印int變量'aantalWoorden'和Arraylist'woorden'。但是每當我這樣做時,我都會從默認構造函數中獲取值(因爲它們在方法內部更新)。該方法應該是無效的,所以我不能返回值。如何在不改變方法本身的情況下獲取int和array的值,這些值在'woordenNaarLijst'方法中定義。如何在Java中使用void方法輸出變量

對不起,如果這是一個簡單的問題,或者如果我做錯了什麼,但我相對比較新的編程。

public class AnalyseZin { 
    private String zin; 
    int aantalWoorden; 
    int i1 = 0, i2 = 0; 
    private ArrayList<String> woorden; 

    public AnalyseZin() { 
     woorden = new ArrayList<>(); 
     aantalWoorden = 0; 
    } 

    public int getIndex(int i) { 
     char c; 
     for (; i < zin.length(); i++) { 
      c = zin.charAt(i); 
      if (c == '\n' || c == '.' || c == ',' || c == ' ') 
       return i; 
     } 
     return i; 
    } 

    public String getWoord() { 
     i2 = getIndex(i1); 
     StringBuilder sb = new StringBuilder(); 
     for (; i1 < i2; i1++) { 
      sb.append(zin.charAt(i1)); 
     } 
     return sb.toString(); 
    } 

    public void woordenNaarLijst() { 
     String s; 
     while (true) { 
      s = getWoord(); 
      if (s.length()==0) break; 
      woorden.add(s); 
      aantalWoorden++; 
     } 
    }  
} 

我遺漏了不相關的代碼段,代碼在我的末尾工作。

+3

您正在使用'woordenNaarLijst'方法訪問類成員'woorden'和'aantalWoorden'。在該方法中所做的任何更改都會反映到外部。請檢查'if(s.length()== 0)break;'在更新發生之前停止執行 – shanmuga

回答

1

也許如果你只是想得到aantalWoorden和woorden的價值而不管它是否被正確更新了,你可能想爲這些人創造獲得者。

例子:

// Additional getter methods in AnalyseZin 

public int getAantalWoorden(){ 
    return aantalWoorden; 
} 

public ArrayList<String> getWoorden(){ 
    return woorden; 
} 

所以,如果你創建AnalyseZin對象,你可以這樣做:

// create variables for the container of values from the AnalyseZin 
int newIntVal = 0; 
ArrayList<String> newListVal = new ArrayList<String>(); 

// create instance of the object 
AnalyseZin test = new AnalyseZin(); 
// call woordenNaarLijst method to update the woorden and aantalWoorden 
test.woordenNaarLijst(); 

// pass values from AnalyseZin 
newIntVal = test.getAantalWoorden 
newListVal = test.getWoorden(); 

// print out int values 
System.out.println("new int value = " + Integer.toString(newIntVal)); 
// print out list contents 
for (String item : newListVal){ 
    System.out.println("item from list = " + item); 
} 

希望這有助於。

+0

謝謝!這工作。我沒有使用容器部分。當你需要打印另一個班級的數據時,這總是需要嗎? – Baithoven

+0

@Baithoven不,你不必使用容器。您可以直接使用它來打印出值。我只是想讓閱讀更容易。 :)感謝您接受我的答案。 :) – Louie11