题解 | #写出这个数 (20)#

写出这个数 (20)

http://www.nowcoder.com/practice/2121c22523b94a0bad8e50c861a22723

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String num = sc.nextLine();
        String[] arr = new String[]{"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
        int sum = 0;
        for(int i = 0; i < num.length(); i++){
            sum+=Integer.parseInt(String.valueOf(num.charAt(i)));
        }
        StringBuilder sb = new StringBuilder();
        String result = String.valueOf(sum);
        for(int i = 0; i < result.length();i++){
            
            sb.append(arr[Integer.parseInt(String.valueOf(result.charAt(i)))]);
            sb.append(" ");
        }
        System.out.println(sb.toString().trim());
    }        
}

思路比较明确,就是创建一个数组,直接对象下标就是中文,然后先累加,然后把结果对应的中文解析就好了! 但是之前一直错误,就是说再string转int的时候,有一个方法要区别开。 一开始用Integer.valueOf(),但是每次都超过arr的下标,为嘛?因为Integer.valueOf()方法返回的是一个Integer对象,导致每次Integer.valueOf("1")的时候,居然等于49?后来查了一下,原来1的ASCII码是49.。。 所以,对于String转Int类型,最好用Integer.parseInt(),这个方法在保证String为int类型的时候,直接返回十进制的int数值。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
07-10 14:08
已编辑
江西农业大学 Java
念旧select:做完把项目放到自己硬盘里给他看,看完拷走
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务