lzJava基础进行中,今天偶然间看到的一个题目:

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
如下代码:

import java.util.*;
public class Main2{
public static void main(String[] args){
String[] date = {"Ling", "Yi", "Er", "San", "Si", "Wu", "Liu", "Qi", "Ba", "Jiu"};
int digit = 1;
int t = 0;
Scanner sc = new Scanner(System.in);
int sum = 0;
String arr = sc.nextLine();
String[] a = arr.split("");
int[] num = new int[a.length];
for(int i = 0;i<a.length;i++){
num[i] = Integer.parseInt(a[i]);
}
for(int j = 0;j<num.length;j++){
sum = sum + num[j];
}
while(sum/(Math.pow(10,digit))>1)
digit++;
for(int i = digit - 1;i>=0;i--){
t = (int)(sum/Math.pow(10,i));
System.out.print(date[t]+" ");
sum = (int)(sum - t*Math.pow(10,i));
}
}
}

看到本题的第一反应,Scanner类接受数据,这个是一贯的习惯,然后开始上手了,接收一个字符串肯定是用nextLine,这没想起他的。然后接收字符串,转换成int类型,问题来了,怎么样打印输出呢?我的第一选择是用switch选择,but结果貌似就只能是你在已知能够输出几位数的情况下,毕竟经验不丰富,想的不是这么多,只想能过实现个四位数就OK了,总归是不完美的,一番苦想。。。。

最后看了百度,找到了C语言的代码。幡然醒悟,原来还可以这样,定义想要输出的0~9的中文拼音为数组,修修改改之后的代码:

while(sum/(Math.pow(10,digit))>1)
digit++;
for(int i = digit - 1;i>=0;i--){
t = (int)(sum/Math.pow(10,i));
System.out.print(date[t]+" ");
sum = (int)(sum - t*Math.pow(10,i));
}

然后出了一个缺失精度的问题,Math的pow返回的是double型的,汗~,粗心,强制转换类型  Ok  大功告成。

最后总结:

在本次题目的历程中,收获肯定是有的,对于Java的一些类和方法的用法印象加深了,相信以后的运用会更加得心应手,同时在做题的同时自己思考问题,解决问题的能力有了点点的提升,当然一次次的努力,总是会积少成多的么,其次意识到了自己性格的不足,粗心大意,对细节的把握上和对逻辑上的研究还有严重不足,再接再厉吧!康忙!

第一次试着写点什么,只为学习之余记录下学习过程中的心路历程。不喜勿喷,谢谢!

我的Java历程_写出这个数的更多相关文章

  1. PAT 乙级 1002.写出这个数 C++/Java

    1002 写出这个数 (20 分) 题目来源 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n ...

  2. PAT乙级 1002. 写出这个数 (20)

    1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字 ...

  3. PAT-乙级-1002. 写出这个数 (20)

    1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字 ...

  4. [C++]PAT乙级1002.写出这个数(20/20)

    /* 1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10^100. ...

  5. PAT 1002 写出这个数 (20)(代码)

    1002 写出这个数 (20)(20 分) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10^100 ...

  6. PTA(Basic Level)-1002 写出这个数

    一 1002 写出这个数  读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10​10 ...

  7. 【PAT】1002. 写出这个数 (20)

    1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...

  8. PAT1002 写出这个数 (C++实现)

    PAT乙级考试题目 1002 写出这个数 (20 分) 题目要求: 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数  ...

  9. 【算法笔记】B1002 写出这个数

    1002 写出这个数 (20 分)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 101 ...

随机推荐

  1. visio中如何取消跨线和去掉页边距

    比较来说,写论文visio和inkscape都不可缺少. 比如visio跨线的问题,已经遇到过两次忘记了.这次截个图作为记录.其实就是在“设计”一栏里,把连接线里面的跨线显示的对勾去掉即可. *** ...

  2. 给大家介绍几个常见的Android代码片段

    今天在源码天堂那个网站,也下载了一个不错的Android源码特效,现在分享一下给博客园的朋友吧,个人觉得那个网站还是挺不错的,希望大家能够使用得上. 仿美图秀秀拼图功能源码 仿美图秀秀拼图功能源码,最 ...

  3. Unity 控制public/private 是否暴露给Inspector面板

    默认情况下Public是暴露给Unity,protect/private是不暴露给Unity的,但有时候想让外部引用,又不想暴露给Unity,怎么办? 对Unity隐藏,使用[HideInInspec ...

  4. LeetCode Golang 7. 整数反转

    7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. Tips : Math包给出的类型大小的边界: // Integer limit values. const ...

  5. K3内部表数据名称

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.----------------系统设置------------------------FStatus: ...

  6. Ubuntu_18.04安装网易云音乐

    首先到网易云音乐官网下载网易云音乐,ubuntu版的,安装. 这时候的图标打不开,缺少libcanberra sudo apt install libcanberra-gtk-module 安装完了配 ...

  7. WePy--使用zanUI组件

    因为Wepy 中不能直接引入zanUI组件, 好在还有百度, 参考链接 https://github.com/brucx/wepy-zanui-demo (感谢); 我的做法是将 源码下了下来, 源码 ...

  8. python_字典的使用

    '''info = { "stu1":"Lie","stu2":"Weite","stu3":&qu ...

  9. noip复习之拓扑排序

    之前很多很多紫书上的东西我都忘了…… 抄题解的后果…… 做了一下裸题 https://vjudge.net/problem/UVA-10305 拓扑排序还可以来判环 #include<bits/ ...

  10. 2015 Multi-University Training Contest 3 hdu 5324 Boring Class

    Boring Class Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...