如何正确回归这些方法?

时间:2014-04-22 16:29:13

标签: java substring string-formatting return

任何人都可以解释一下这种方法的正确回报是什么?现在我错过了一个。

public String getPhoneNumber() {    
    System.out.println(String.format("+%d(%2$s)%3$s-%4$s-%5$s", 38,
                       String.format("%010d", 501234567).substring(0, 3),
                       String.format("%010d", 501234567).substring(3, 6),
                       String.format("%010d", 501234567).substring(6, 8),
                       String.format("%010d", 501234567).substring(8)));
}

3 个答案:

答案 0 :(得分:4)

您没有返回String,您只需在默认系统打印流中打印一个。

因此您的代码将无法编译。

return String.format("+%d(%2$s)%3$s-%4$s-%5$s", 38,
                    String.format("%010d", 501234567).substring(0, 3),
                    String.format("%010d", 501234567).substring(3, 6),
                    String.format("%010d", 501234567).substring(6, 8),
                    String.format("%010d", 501234567).substring(8))

答案 1 :(得分:2)

试试这个:

public String getPhoneNumber() {    
    String result = String.format("+%d(%2$s)%3$s-%4$s-%5$s", 38,
        String.format("%010d", 501234567).substring(0, 3),
        String.format("%010d", 501234567).substring(3, 6),
        String.format("%010d", 501234567).substring(6, 8),
        String.format("%010d", 501234567).substring(8));
    System.out.println(result);
    return result;
}

答案 2 :(得分:0)

当然,这是一个可以做你想做的工具类,
执行main()方法以查看结果。

import java.util.Formatter;

/**
 * <p>
 * Utility for phone number.
 * </p>
 * 
 * @author eric
 * @date Apr 23, 2014 1:09:51 AM
 */
public class PhoneNumberUtil {
    // regular expression for number format
    public static final String NUMBER_FORMAT_REGEX = "+%d(%s)%s-%s-%s";

    /**
     * <p>
     * Format a phone number.
     * </p>
     * 
     * @param originalNumber
     * @param countryCode
     * @return
     */
    public static String getPhoneNumber(int originalNumber, int countryCode) {
        String originalStr = String.format("%010d", originalNumber);

        StringBuffer buf = new StringBuffer();

        Formatter fmt = new Formatter(buf);
        fmt.format(NUMBER_FORMAT_REGEX, countryCode, originalStr.substring(0, 3), originalStr.substring(3, 6), originalStr.substring(6, 8),
                originalStr.substring(8));
        fmt.close();

        return buf.toString();
    }

    public static void main(String[] args) {
        int phoneNumber = 501234567;
        int countryCode = 38;

        String result = PhoneNumberUtil.getPhoneNumber(phoneNumber, countryCode);
        System.out.println(result);
    }
}