2016-05-15 52 views
1

我有這樣一個代碼:如何刷新字符串中的某些參數?

int q = 2; 
int w = 3; 
String str = "q = " + q + "\nw = " + w; 

q++; 
System.out.println(x+q); 

是否有可能刷新str中Q,所以輸出是不當q = 2,而q = 3的?

我的實際字符串很大,並有更多的參數。 它看起來很糟糕,因爲我必須在5種不同的方法中使用這件作品。

+3

號使用類,改變字段,並創建一個方法(不是'的toString()')輸出成品字符串值 – Bohemian

+2

「刷新字符串」你可以運行'海峽=「q = 「+ q +」\ nw =「+ w;'再次。 – immibis

回答

1

創建一個包含所有參數和生成需求串類,像這樣:

class MyStringGenerator{ 
    private int q; 
    private int w; 
    setQ(int q){ 
    this.q = q; 
    } 
    setW(int w){ 
    this.w = w; 
    } 

    public String getMyString(){ 
    return String.format("q = %d \nw = %d", q, w); 
    } 
} 

MyStringGenerator msg = new MyStringGenerator(); 
int q = 2; 
int w = 3; 
msg.setQ(q); 
msg.setW(w); 

String str = msg.getMyString(); 

q++; 
System.out.println(x+q); 
msq.setQ(q); // set a new value of Q 
String newString = msg.getMyString(); 
+0

當你使用'String#format'的時候,同樣使用'%n'而不是'\ n'。 – Tom

+0

@Tom,我不明白你的問題,請澄清 - 我使用%d作爲格式限定符,並且\ n作爲一個新行,它建立一個字符串'q = value(new-line)w = value',請參閱文檔:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object ...) – krokodilko

+0

'\ n'創建一個新行,是的,但它不像'%n'那樣平臺獨立,因爲後者在Windows上創建'\ r \ n'。 – Tom

1

變量str是不可變的,你不能改變它,一旦它被創建

相關問題