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. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)

    题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ...

  2. PHP 导出excel 数据量大时

    public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...

  3. 使用JS&jQuery改善用户体验

    第一章  JavaScript基本语法 一.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&= ...

  4. 51nod 1301 集合异或和(DP)

    因为当\(A<B\)时,会存在在二进制下的一位,满足这一位B的这一位是\(1\),\(A\)的这一位是\(0\). 我们枚举最大的这一位.设为\(x\)吧. 设计状态.\(dp[i][j][1/ ...

  5. 小白都能看懂的Linux系统下安装配置Zabbix

    实验环境: 操作系统:Centos 7.6 服务器ip:192.168.10.100 运行用户:root 网络环境:Internet Zabbix是一个基于web界面的提供分布式系统监控及网络功能的企 ...

  6. 紫书 习题7-8 UVa 12107 (IDA*)

    参考了这哥们的博客 https://blog.csdn.net/hyqsblog/article/details/46980287  (1)atoi可以char数组转int, 头文件 cstdlib ...

  7. 【Codeforces Round #482 (Div. 2) B】Treasure Hunt

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们考虑每个字符串中出现最多的字母出现的次数cnt[3] 对于这3个cnt的值. 如果cnt+n<=s[i].size 那么显 ...

  8. C#-MSMQ安装及配置

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. 主流框架(SSH及SSM)配置文件的模板头文件

    SSH三大框架整合配置头文件模板如下: 一:Spring配置文件(beans.xml)模板:<beans    xmlns="http://www.springframework.or ...

  10. Android application framework 分析[in process]

    application activity application service application UI system application sdk tool JVM 1 activity t ...