2016-12-27 57 views
0

我將如何創建一個方法,該方法輸入的字符串和輸出的所有字符串都像超級字符串一樣輸入到該字符串中?Java:傳遞一個字符串並將其存儲

在主類

例如:

a= "fido" 
b= "rufus" 
c= "dog" 

superString(a); 
superString(b); 
superString(c); 

System.out.println(superString()); should be "fidorufusdog" 

到目前爲止,我=

public static String superString (String sb) { 
    StringBuilder ssb = new StringBuilder(32); 
    ssb = ssb.append(sb); 
    return ssb.toString(); 
} 

下面我的代碼是什麼,我正在爲一個股票模擬器:

public class Operators { 
    public static void operate(double price, double low, String company){ 
    double percent = (price/low-1)*100; 
    double rpercent = Math.round(percent * 100.0)/100.0; 
    StringBuilder sb = new StringBuilder(32); 

    if(rpercent <= 10) { 
     sb.append(company + " is trading at:"); 
     sb.append("the current price is: " + price); 
     sb.append("the 52 week low is: " + low); 
     sb.append("percent of 52 week low is: " + rpercent); 
    } 
    } 
} 

操作方法在我的主要方法中的for循環中調用了506次,我想要將所有506 sb字符串並創建一個supe所有的結果 - [R串

+0

請格式化您的代碼。並使其無錯地編譯。 –

+0

我想你爲什麼需要它 – pedrofb

+1

您給出的第一個示例代碼片段與*「一個輸入字符串和輸出所有字符串的方法」不同*。 'superString(a)'和'superString()'必須是兩個獨立的方法 - 一個接受一個String並且可能不返回任何內容,另一個不接受輸入但返回一個String。 – Keiwan

回答

0

我希望我不會低估問題的深度或有你的問題錯了,但對我來說,這聽起來像你要求static關鍵字?

class SomeClass { 

    static StringBuilder accumulator = new StringBuilder(); 

    public String superString (String sb) { 
     SomeClass.accumulator.append(sb); 
     return ssb.toString(); 
    } 

} 

這是Java靜態關鍵字的簡單用例。由於累加器被聲明爲靜態,所以會有一個變量實例。這個單一實例將被類SomeClass的實例訪問。例如:

SomeClass a; 
SomeClass b; 

a.superString("aaa"); 
b.superString("bbb"); 

// now accumulator.toString() returns "aaabbb" 
+0

會給這個試試謝謝,這個靜態累加器基本上將每個超字符串的所有字符串保存在for循環中,而不是爲之前的迭代擦除,我喜歡它現在發生在我身上了嗎? – Joeysk

+0

你應該閱讀關於Java靜態關鍵字。這是一個重要的話題。另請參閱我的編輯。希望它可以幫助... – Matthias

+0

這與所有提供靜態變量的人一起工作。這是暫時的解決方案,現在將尋找重組代碼來擺脫它。 – Joeysk

0

聲明一個字符串生成器,作爲包含類的靜態成員和初始化它只有一次

static StringBuilder ssb; 
public static String superString (String sb) { 
    if(ssb == null) 
      ssb = new StringBuilder(32); 
    ssb = ssb.append(sb); 
    return ssb.toString(); 
} 
+0

謝謝你,先生,我會試一試 – Joeysk

0

對於這種萬阿英,蔣達清的您將兩個選擇:

  1. 簡單:創建Java類的靜態變量,並對其進行操作。
  2. 改進:創建一個支持您的需求的設計模型。

例1:

public class Operators { 

    private static String text =""; 

    public static String superString(String sb) {   
     if (sb != null) { 
      text = text.concat(sb); 
     } 
     return text; 
    } 

} 

出2:你可以使用一個的收集或字符串的列表

+0

所以我假設一個靜態變量將存儲每個超字符串實例的字符串,當我在循環中使用它時?聲明靜態變量通常被認爲是不好的嗎?我知道靜態方法,但不知道你可以聲明靜態變量。 – Joeysk

+0

它是靜態變量,它是類的變量而不是對象的實例。這意味着,它將在您的對象的所有實例之間共享,並且在更新時,所有實例都將獲得編輯的值。 – bilelovitch

0

這是糟糕的OOP設計。在Stock類中創建Stock對象的類並覆蓋toString(或創建其他一些簡單的輸出方法)會更好。然後將Stock的每個實例添加到數組中,並調用每個對象的toString(或您定義的其他輸出方法)。