2017-10-06 31 views
-5
class Test { 

    private double d; 
    private int i; 
    private char c; 

    public Test (float x){ 
     d = x; 
     i = 5; 
     c = 'A'; 
    } 
    public Test (double x){ 
     d = x + x; 
     i = 3; 
     c = 'Z'; 
    } 

    public void set(char x) { 
     c = x; 
    } 

    public void set(int x) { 
     i = x; 
    } 

    public String toString(){ 
     return "d=" + d + " i=" + i + " c ="+c; 
    } 

} 

public class Display{ 
public static void main(String args[]){ 
    Test t1 = new Test(10); 
    System.out.println(t1.toString()); 
    t1.set('m'); 
    System.out.println(t1); 
    Test t2 = new Test(20.25); 
    System.out.println(t2); 
    t2.set('a' + 1); 
    System.out.println(t2); 
} 
} 

我不明白的最後一個命令的輸出t2.set('a' + 1); 輸出爲:如何計算我?這是令人困惑

d=40.5 i=98 c =Z" 

爲什麼我= 98?

這是我第一次張貼在這裏它告訴我,我的問題是,大部分的代碼等等等等我只是添加了一些文本ignoooore吧:))))))

+6

請不要張貼廢話來解決網站的代碼/文本要求。相反,請更詳細地解釋*您的代碼和問題。這是**爲什麼**要求已到位。 –

+2

另外,爲了更好地設置代碼的格式,讓它變得有意義並且易於閱讀,這對您不會造成什麼影響。 –

+0

您可能希望將代碼更好一些。這會讓其他人更容易閱讀。 – OneSurvivor

回答

3

因爲你通過set方法對其進行設置:

t2.set('a' + 1); 

a具有代碼點97.因此'a'+1 == 98,因此您的結果。其次,爲什麼set(int)過載選擇的是set(char)過載,是因爲'a' + 1顯然是int類型的:'a'被提升爲int,然後執行加法。

+0

我怎麼知道字母代碼點?我是否必須運行代碼,或者如果我正在測試,我可以在紙上計算出結果嗎? – Muhammad

+0

@Muhammad Java字符是'Unicode',所以任何Unicode代碼表都可以,例如https://unicode-table.com/en/或http://www.fileformat.info/info/unicode/index.htm或https://en.wikipedia.org/wiki/List_of_Unicode_characters或權威來源:* * HTTPS://unicode.org/charts/About.html** – Andreas