2014-05-04 86 views
1

我是java新手,如果這是一個「愚蠢」的問題,請耐心等待我。有沒有一種方法來格式化類似於printf(「%d」,a)的返回語句?這是我的代碼到目前爲止的一個片段。返回語句是否可以像printf一樣格式化?

public static int numUnique(int a, int b, int c) { 
     if (a==b && a==c) { 
      System.out.println("No unique numbers."); 
     } else if (a==b && a!=c) { 
      System.out.printf("%d%d", a, c); 
     } else if (a==c && a!=b) { 
      System.out.printf("%d%d", c, b); 
     } else if (b==c && b!=a) { 
      System.out.printf("%d%d", b, a); 
     } else { 
      System.out.printf("%d%d%d", a, b, c); 
     } 
    } 
} 

我知道,需要有正確的語法中有一個return語句,我想同樣使用返回的printf在我的代碼中使用了「理論上」。謝謝!

傑森

+1

但不應該這個方法返回一個int ...? – sfletche

+0

'int'沒有格式,甚至沒有表示;這只是一個數字。正如@DavidWallace所示,您可以返回一個字符串。 – davmac

回答

4

如果你是一個返回String的方法後,您可以使用String.format方法,它接受相同的參數System.out.printf。所以你的問題的代碼看起來像這樣。

請注意,我已經引入了一些空格來阻止您的整數一起運行,並且看起來像一個單一的數字。

public static String numUnique(int a, int b, int c) { 
    if (a==b && a==c) { 
     return "No unique numbers."; 
    } else if (a==b && a!=c) { 
     return String.format("%d %d", a, c); 
    } else if (a==c && a!=b) { 
     return String.format("%d %d", c, b); 
    } else if (b==c && b!=a) { 
     return String.format("%d %d", b, a); 
    } else { 
     return String.format("%d %d %d", a, b, c); 
    } 
} 
+0

感謝您的回覆。這有助於事情更有意義。實際上,你的版本效果更好,因爲我不需要特別返回整數類型的值。 – jgillespie

+0

有一個簡短的方法來實現非常相似的東西。你可以做一些像'return new HashSet (Arrays.asList(a,b,c))。toString();'沒有所有'if/else'的東西。這與你在這裏打印的東西不完全一樣,但它很接近。我沒有把它作爲答案發布,因爲它並沒有真正回答你的問題,即使它可以解決你的問題。 –

1

隨着return聲明,你回饋數據。程序(或用戶)如何處理該數據並不是該方法的關注點。

使用格式化操作,您的代表數據。只要你有正確的數據,你可以用你喜歡的任何方式表示它。

所以,嚴格來說,這是不可能的,除非你想用String.format這樣的方式,以另一個答案的建議。

+0

非常感謝。這實際上幫助我解決了關於這些類型的陳述的一些錯誤觀念。 – jgillespie

相關問題