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. 微信小程序实现图片双滑缩放大小

    在做小程序开发的过程中,后端传来一张图片地图,需要实现双手指滑动,使图片缩放,最终得出了一下代码: js : Page({ data: { touch: { distance: , scale: , ...

  2. 杭电 2817 A sequence of numbers【快速幂取模】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817 解题思路:arithmetic or geometric sequences 是等差数列和等比数 ...

  3. 激情世界杯,盛夏大放价,CDR 618返场继续嗨

    最近被刷屏应该就是世界杯.世界杯和世界杯了... 进行了到第七天的球迷们,你们还好么 私房钱还剩下多少?上班有没有请假迟到? 哎,中国的小龙虾都去俄罗斯了,就国足队员没去… 满屏而来的不仅是手机朋友圈 ...

  4. Java自定义属性注解

    代码: import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.ElementT ...

  5. 路飞学城Python-Day31

    19-生产者消费者模型 生产者:生成数据的任务 消费者:处理数据的任务 在并发编程的过程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理,才能继续生产数据:同样的,如果 ...

  6. Parameter ‘brOrderNo’ not found

    org.apache.ibatis.binding.BindingException: Parameter 'brOrderNo' not found. Available parameters ar ...

  7. Day 07 -02 拷贝 浅拷贝 深拷贝

    必考 存一个值还是多个值 一个值:整型/浮点型/字符串 多个值:列表/元祖/字典/集合 有序or 无序 有序:字符串/列表/元祖 无序:字典/集合 可变or 不可变 可变:列表/字典/集合 不可变:整 ...

  8. Settings Django Static Files

    静态文件是通过django.contrib.staticfiles来管理的. 配置Django静态文件,Djang官网静态文件配置介绍.简言之,通过以下三个步骤来配置和加载静态文件: 设置静态文件别名 ...

  9. [Linux C]系统调用(system call)和库函数调用(Library functions)

    Linux 下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).系统调用实际上就是指最底层的一个调用,在 linux 程序设计里面就是底层 调 ...

  10. laravel报错:MassAssignmentException

    报这种错误是因为没有设置白名单或者黑名单.在使用fill填充时,需要设置白/黑名单. $model->fill($params);return $model->save(); 找到对应的m ...