Java 如何使这些方法正确返回?

Java 如何使这些方法正确返回?,java,substring,string-formatting,return,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

谁能解释一下这种方法的正确回报率是多少?现在我少了一个

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)));
}

您没有返回
字符串
,只是在默认系统打印流中打印一个字符串

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

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))

您没有返回
字符串
,只是在默认系统打印流中打印一个字符串

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

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))
试试这个:

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;
}
试试这个:

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;
}

当然,这里有一个util类,它可以做您想做的事情,
执行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);
    }
}
import java.util.Formatter;
/**
*
*实用程序的电话号码。
*

* *@作者埃里克 *@日期2014年4月23日凌晨1:09:51 */ 公共类电话号码rutil{ //数字格式的正则表达式 公共静态最终字符串编号\u格式\u REGEX=“+%d(%s)%s-%s-%s”; /** * *设置电话号码的格式。 *

* *@param原始编号 *@param countryCode *@返回 */ 公共静态字符串getPhoneNumber(int originalNumber,int countryCode){ String originalStr=String.format(“%010d”,originalNumber); StringBuffer buf=新的StringBuffer(); 格式化程序fmt=新格式化程序(buf); 格式(数字、格式、正则表达式、国家代码、原始字符串子字符串(0,3)、原始字符串子字符串(3,6)、原始字符串子字符串(6,8), 原始子串(8); fmt.close(); 返回buf.toString(); } 公共静态void main(字符串[]args){ int phoneNumber=501234567; 国际编码=38; 字符串结果=PhoneNumberUtil.getPhoneNumber(phoneNumber,countryCode); 系统输出打印项次(结果); } }
当然,这里有一个util类,它可以做您想做的事情,
执行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);
    }
}
import java.util.Formatter;
/**
*
*实用程序的电话号码。
*

* *@作者埃里克 *@日期2014年4月23日凌晨1:09:51 */ 公共类电话号码rutil{ //数字格式的正则表达式 公共静态最终字符串编号\u格式\u REGEX=“+%d(%s)%s-%s-%s”; /** * *设置电话号码的格式。 *

* *@param原始编号 *@param countryCode *@返回 */ 公共静态字符串getPhoneNumber(int originalNumber,int countryCode){ String originalStr=String.format(“%010d”,originalNumber); StringBuffer buf=新的StringBuffer(); 格式化程序fmt=新格式化程序(buf); 格式(数字、格式、正则表达式、国家代码、原始字符串子字符串(0,3)、原始字符串子字符串(3,6)、原始字符串子字符串(6,8), 原始子串(8); fmt.close(); 返回buf.toString(); } 公共静态void main(字符串[]args){ int phoneNumber=501234567; 国际编码=38; 字符串结果=PhoneNumberUtil.getPhoneNumber(phoneNumber,countryCode); 系统输出打印项次(结果); } }
您希望该方法返回什么?格式化程序电话号码?为什么不返回它而不是打印它呢?你的字段长度是2+3+4+5=14位,但是你的嵌套格式只有10位。但是,我仍然觉得你的程序有点“难看”,我相信你可以写得更漂亮、更短。你想要返回什么方法?格式化程序电话号码?为什么不返回它而不是打印它呢?你的字段长度是2+3+4+5=14位,但是你的嵌套格式只有10位。但是,我仍然觉得你的程序有点“丑陋”,我相信你可以写得更漂亮、更短。你的代码的简短版本是什么?如果不难的话,你能给我看看吗?@Predict\u检查我发布的另一个答案。你的代码的简短版本是什么?如果不难的话,你能给我看看吗?@Predict\u检查我发布的另一个答案。