A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 136616244 中级黑马   /  2014-5-19 22:25  /  1961 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:

键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
  1. package com.itheima;

  2. import java.util.Scanner;

  3. /**
  4. * 第一题:1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天。
  5. * @author SAMSUNG
  6. *
  7. */
  8. public class Test1 {
  9.         public static void main(String[] args) {
  10.                 //定义一个变量等于60等译一分钟
  11.                 int oneMinute=60;
  12.                 //定义一个变量等于3600等于一小时
  13.                 int oneHour = 3600;
  14.                 //定义一个变量等于86400等于一天
  15.                 int oneDay = 86400;
  16.                 //打印语句告诉用户要输入的内容
  17.                 System.out.println("请输入一个大于零的整数:");
  18.                 //创建接受键盘输入的对象
  19.                 Scanner keyboard =new Scanner(System.in);
  20.                 //调用该对象的方法接收键盘输入
  21.                 int time = keyboard.nextInt();
  22.                 //如果时间在一分钟之内
  23.                 if(time<oneMinute)
  24.                         System.out.println(time+"秒");
  25.                 //如果时间在一小时之内
  26.                 else if(time<oneHour&&time%oneMinute!=0)
  27.                         System.out.println(time/oneMinute+"分"+time%oneMinute+"秒");
  28.                 //如果时间在一小时之内,并且为分钟的整倍数
  29.                 else if(time<oneHour&&time%oneMinute==0)
  30.                         System.out.println(time+"分");
  31.                 //如果时间在一天之内
  32.                 else if(time<oneDay&&time%oneHour!=0)
  33.                         System.out.println(time/oneHour+"小时"+(time%oneHour)/oneMinute+"分"+(time%oneHour)%oneMinute+"秒");
  34.                 //如果时间在一天之内并且为小时的倍数
  35.                 else if(time<oneDay&&time%oneHour==0)
  36.                         System.out.println(time/oneHour+"小时");
  37.                 //如果时间超过一天
  38.                 else
  39.                         System.out.println(time/oneDay+"天"+(time%oneDay)/oneHour+"小时"+((time%oneDay)%oneHour)/oneMinute+"分"+(((time%oneDay)%oneHour)%oneMinute)+"秒");
  40.         }
  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

23 个回复

倒序浏览
我怎么感觉可读性极差啊?
回复 使用道具 举报 1 0
感觉注释写得太多太频繁了。。
= = 把每个判断/循环/函数的功能、定义变量的意义说清楚就好,不用每句都解释的~

像下面这种注释里就写
//定义变量分别表示一分钟、一小时、一天
int oneMinute=60;
int oneHour = 3600;
int oneDay = 86400;

if判断那里就写
//逐步判断并计算秒数所代表的时间balabala


个人拙见..拙见..

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
楼主同志,你也准备36期吗?加个好友吧
回复 使用道具 举报
Sevenette 发表于 2014-5-19 22:36
感觉注释写得太多太频繁了。。
= = 把每个判断/循环/函数的功能、定义变量的意义说清楚就好,不用每句都解 ...

我感觉应该可以用一些工具类可以实现,不需要用 if这么麻烦的判断,这样写可能会扣分
回复 使用道具 举报
郭帅帅 发表于 2014-5-19 22:37
楼主同志,你也准备36期吗?加个好友吧

好啊,不过我菜鸟啊
回复 使用道具 举报
136616244 发表于 2014-5-19 22:44
好啊,不过我菜鸟啊

呵呵,我也很菜,还有两次录取的时间,抓紧了。你博客写完了吗
回复 使用道具 举报
本帖最后由 Sevenette 于 2014-5-19 22:50 编辑
136616244 发表于 2014-5-19 22:43
我感觉应该可以用一些工具类可以实现,不需要用 if这么麻烦的判断,这样写可能会扣分 ...

我用的是while循环,其实也很挫= = 但代码看着短了一些~
把if单独封装成一个函数还是必要的吧,不能都扔在main方法里,看着好胖0.0
回复 使用道具 举报
郭帅帅 发表于 2014-5-19 22:48
呵呵,我也很菜,还有两次录取的时间,抓紧了。你博客写完了吗

博客我准备好了哦,我写了笔记。整理一下应该就完事了
回复 使用道具 举报
毕老师不是说过吗?中英文结合的代码阅读性也极差。最好最好按照用javadoc工具生成文档工具的格式写就行了。
中文不要每行都写。
回复 使用道具 举报
136616244 发表于 2014-5-19 22:50
博客我准备好了哦,我写了笔记。整理一下应该就完事了

恩恩,感觉有把握吗
回复 使用道具 举报
本帖最后由 136616244 于 2014-5-19 22:58 编辑

那必须有啊~~:lol
如果连想赚你钱的机构都进不了的话,趁早改行
回复 使用道具 举报
136616244 发表于 2014-5-19 22:56
那必须有啊~~
如果连想赚你钱的机构都进不了的话,趁早改行

编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。
这个题,我怎么没搞明白什么意思啊,你会不会?
回复 使用道具 举报
我感觉是不是你算法有问题啊,,怎么可以这么麻烦,,我这样想如果输入一个数是以秒为单位,那么,它对60取查获就得到分,,对3600取模就得到时,对24*3600模就得到天,,再对60取余就可以得到秒,,我是这样写的,,不知道是不我想得太简单了,,还是人们想得太复杂了,,看一下我代码!!

/*
1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:

键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
*/
import java.util.*;
class Time_Show
{
       
        public static void main(String[] args)
        {
                System.out.println("请输入一个整数");
                int nubm ,day,hour,minute,second;
                Scanner in=new Scanner(System.in);
                nubm = in.nextInt();
                day = nubm/(24*60*60);                                                //秒对60求模得到到分,再对60求模得到时,再对24求模得到天!!
                hour = nubm%(24*60*60)/(60*60);                                //把数进行天的求余,余下的为时,再对时进行求模!!
                minute = nubm%(24*60*60)%(60*60)/60;                //对余下的时进行求分的求模得到分,,
                second = nubm%(24*60*60)%(60*60)%60;                //最后得到秒!!
                System.out.println(day+"天"+hour+"时"+minute+"分"+second+"秒");                //输出!
        }
   
}
我是不是做错了做,,求解!!
回复 使用道具 举报
郭帅帅 发表于 2014-5-20 10:13
编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。
这个题,我怎么 ...

将字符串转成数组,从后面遍历,判断是否等于”。“然后substring(start,end+1)
回复 使用道具 举报
设计一段程序应当要简洁,功能单一,封装良好,这样有利于程序的维护和功能扩展,你的代码在一个模块内功能太复杂了,而且可读性不是很好,出现问题,也不容易定位,而且为了提高代码性能,要尽量的使用加法减法和移位操作而不使用乘法和除法。下面我做这道题的时候的代码架构,中间的方法没有贴出

  1.         /**
  2.          * 将输入的秒数i用“i秒”表示出来;
  3.          * @param i
  4.          * @return
  5.          */
  6.         public static String toSec(int i){
  7.                 String s = new String();
  8.                 return s;
  9.         }
  10.         /**
  11.          * 将输入的秒数转换成分钟数并以“x分x秒”(0不输出)的格式输出
  12.          * @param i
  13.          * @return
  14.          */
  15.         public static String toMin(int i){
  16.                 String s = new String();
  17.                 return s;
  18.         }
  19.         /**
  20.          * 将输入的秒数转换成小时数并以“小时x分x秒”(0不输出)的格式输出
  21.          * @param i
  22.          * @return
  23.          */
  24.         public static String toHour(int i){
  25.                 String s = new String();       
  26.                 return         s;
  27.         }
  28.         /**
  29.          * 将输入的秒数转换成天数并以“x天小时x分x秒”(0不输出)的格式输出
  30.          * @param i
  31.          * @return
  32.          */
  33.         public static String toDay(int i){
  34.         String s = new String();
  35.                 return s;
  36.         }
复制代码




回复 使用道具 举报
沉默的爱 发表于 2014-5-20 12:39
我感觉是不是你算法有问题啊,,怎么可以这么麻烦,,我这样想如果输入一个数是以秒为单位,那么,它对60取 ...

键盘输入60,打印1分;
键盘输入3601,打印1小时1秒
这两个要求,你做到了吗
回复 使用道具 举报
郭帅帅 发表于 2014-5-20 17:28
键盘输入60,打印1分;
键盘输入3601,打印1小时1秒
这两个要求,你做到了吗 ...

你没有运行过吗??肯定是能什么到的啊!!算法上有问题吗??

看看这是我的运行结果!!

D:\Java\JAVA_Test>java Time_Show
请输入一个整数
60
0天0时1分0秒

D:\Java\JAVA_Test>java Time_Show
请输入一个整数
3601
0天1时0分1秒
回复 使用道具 举报
大哥,你是在逗我吗?
是输入60是”1分“
而你是0天0时1分0秒
我感觉老师是故意这样弄,考察你的逻辑判断,而你直接忽略??
好好用if.if.if.if判断一下吧
回复 使用道具 举报
学习了学习了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马