黑马程序员技术交流社区
标题: 从键盘接受一个数字,打印该数字表示的时间,最大单位... [打印本页]
作者: code2014 时间: 2014-5-9 08:02
标题: 从键盘接受一个数字,打印该数字表示的时间,最大单位...
importjava.io.*;
importjava.util.*;
public class Time {
public static void main(String[] args) throws IOException
{ Scanner time = newScanner(System.in);
int t,second,mm,hour,day;
t = time.nextInt();
if(t >0){
if(t >=3600*24) //判断天数
{
day = t/(3600*24);
t= t- day * (3600*24);
System.out.print(day+"天");
}
if((3600*24)>t && t>=3600)
{
hour = t/3600;
t = t -hour*3600;
System.out.print(hour+"小时");
}
if(3600>t && t>=60)
{
mm = t/60;
t = t -mm*60;
System.out.print(mm+"分钟");
}
if(60>t && t>0) //判断秒
{
second = t;
System.out.print(second+"秒");
}
}else{
System.out.print("输入的时间不对");
}
}
}
作者: 流沙 时间: 2014-5-16 10:16
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: ZHAOWEI 时间: 2014-5-25 11:11
package com.itheima;
import java.util.Scanner;
/**
* 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
* 键盘输入6,打印6秒;
* 键盘输入60,打印1分;
* 键盘输入66,打印1分6秒;
* 键盘输入666,打印11分6秒;
* 键盘输入3601,打印1小时1秒
* @author Administrator
*/
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int n = sc.nextInt();
num(n);
}
private static void num(int n) {
int m=0;
int l=0;
int k=0;
int j=0;
//得出天数
if (n/(3600*24) !=0) {
j = n/(3600*24);
System.out.println(j+"天");
}
//得出小时数
if (n%(3600*24)/3600 != 0) {
m = n%(3600*24) / 3600;
System.out.print(m+"小时");
}
//得出分数
if ((n%(3600*24)%3600/60) != 0) {
l = n%(3600*24) % 3600 / 60;
System.out.print(l+"分");
}
//得出秒数
if ((n%(3600*24)%3600%60) != 0) {
k = n%(3600*24) % 3600 % 60;
System.out.print(k+"秒");
}
}
}
作者: qfch 时间: 2014-6-5 19:42
学习一下啊
作者: _童金辉 时间: 2014-8-11 00:33
学习了
作者: 孤鸢 时间: 2014-8-18 20:18
学习了,读取键盘输入是不是还有其他方法
作者: 孤鸢 时间: 2014-8-22 23:44
本帖最后由 孤鸢 于 2014-8-23 00:17 编辑
我自己解决的
- import java.util.*;
- public class Test4
- {
- public static void main(String[] args)
- {
- int second,minute,hour,day;
- Scanner in = new Scanner(System.in);
- int time;
- //循环读键盘输入的一个整数
- System.out.print("请输入一个整数(0表示退出):");
- while((time = in.nextInt()) != 0)
- {
- if(time < 60)
- {
- second = time;
- System.out.println(second+"秒");
- }
- else if(time>=60 && time < 3600)
- {
- minute = time/60;
- second = time%60;
- System.out.println(minute+"分"+second+"秒");
- }
- else if(time>=3600 && time < 216000)
- {
- hour = time/3600;
- minute = (time%3600)/60;
- second = time%60;
- System.out.println(hour+"时"+minute+"分"+second+"秒");
- }
- else if(time >= 216000)
- {
- day = time/216000;
- hour = (time%216000)/3600;
- minute = (time%3600)/60;
- second = time%60;
- System.out.println(day+"天"+hour+"时"+minute+"分"+second+"秒");
- }
- else
- System.out.println("输入数据有误,请输入整数");
- }
- }
- }
复制代码
审核过了发出来的,
这样能不加技术分呢 @加分 大神
作者: Fightin黑马 时间: 2014-8-24 22:06
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个数字:");
//定义一个变量接收输入的数据
int time=sc.nextInt();
//定义数组1接收天,时,分,秒的数值
int[]arr1=new int[4];
arr1[3]=time%60;
arr1[2]=(time/60)%60;
arr1[1]=(time/3600)%24;
arr1[0]=time/86400;
//定义字符串数组使数值和天时分秒对应
String[]arr2=new String[4];
arr2[0]=arr1[0]+"天";
arr2[1]=arr1[1]+"小时";
arr2[2]=arr1[2]+"分";
arr2[3]=arr1[3]+"秒";
//对于天时分秒中数值为0的清除对于单位
for(int i=0;i<arr1.length;i++){
if(arr1[i]==0){
arr2[i]="";
}
}
//打印输入数字对应的时间
for(int i=0;i<arr2.length;i++){
System.out.print(arr2[i]);
}
}
}
作为参考
作者: Fightin黑马 时间: 2014-8-24 22:08
有的 用io不过我也还没学到呢 :P
作者: Fightin黑马 时间: 2014-8-24 22:10
你这个好像不满足要求的,比如60输出的应该是1分,而不是1分0秒
作者: 孤鸢 时间: 2014-8-25 15:56
嗯...这样的话,多加个判断,
作者: 要你快乐 时间: 2014-9-3 10:49
这种方法为什么有一段数输出不了呢,比如216000~216009
作者: 要你快乐 时间: 2014-9-3 11:07
能出来了,之前myeclipse没反应过来
作者: 2406035442 时间: 2014-10-8 21:39
楼主少了个while 判断吧 输入了负数或者0 不能继续输入了
作者: inception 时间: 2014-10-9 21:05
楼主和3楼的方法不错,楼主的会出现0秒,在最后一个if中加个判断,如果t不等于0,就打印t+“秒”
作者: 郑松 时间: 2014-10-27 18:30
赞一个!
作者: 考拉是只猫 时间: 2014-11-26 10:28
time的资源是否需要关闭?
作者: xingyunjunjun 时间: 2014-12-10 11:36
学习了,谢谢
作者: __残梦、 时间: 2015-1-27 22:50
好好好!!!
作者: 李永佳 时间: 2015-5-10 17:54
打印秒的那个print应该加上ln吧,否则光标无法调到下一行
作者: 张红兴 时间: 2015-5-15 08:49
楼上你写程序是不是很烂?
import java.util.Scanner;
public class Test1 {
public static void main(String[] args){
Scanner input=new Scanner(System.in); //键盘输入
System.out.println("请输入数字i:");
int i=input.nextInt(); //接收i
int s=i%60; //秒
int m=i/60%60; //分钟
int h=i/3600%60; //小时
int d=i/3600/24; //天
if (i>=86400){
System.out.println(d+"天"+h+"小时"+m+"分钟"+s+"秒");
}else if(i>=3600&&i<86400){
System.out.println(h+"小时"+m+"分钟"+s+"秒");
}else if (i>=60&&i<3600){
System.out.println(m+"分钟"+s+"秒");
}else if (i>=0&&i<60){
System.out.println(s+"秒");
}
}
}
作者: 腹黑生姜 时间: 2015-6-9 12:18
输入字符不可以啊
作者: fanxin_meng 时间: 2015-6-30 15:49
学习一下
作者: 王竹根 时间: 2015-7-14 11:49
importjava.io.*;
importjava.util.*;
public class Test2 {
public static void main(String[] args)
throws IOException
{ Scanner time = newScanner(System.in);
int a,second,minute,hour,day;
system.out.println("请输入一个数:");
t = time.nextInt();
if(a >0){
if(a >=3600*24) //判断天数
{
day = t/(3600*24);
a= a- day * (3600*24);
System.out.print(day+"天");
}
if((3600*24)>a && a>=3600)
{
hour = a/3600;
a = a -hour*3600;
System.out.print(hour+"小时");
}
if(3600>a && a>=60)
{
minute = a/60;
a = a -minute*60;
System.out.print(minute+"分钟");
}
if(60>a && a>0) //判断秒
{
second = a;
System.out.print(second+"秒");
}
}else{
System.out.printIn("输入的时间不对");
}
}
}
作者: 鹏飞 时间: 2015-8-12 08:44
学习一下!!
作者: lishuai881512 时间: 2015-9-2 22:49
学习学习呵呵
作者: cuijinghao 时间: 2015-9-24 02:35
不赖,这个方法吊,我自己写的那就是一坨shit
作者: 刘德坤 时间: 2015-10-7 10:38
进来学习学习!
作者: 切比雪夫 时间: 2015-10-27 10:16
学习一下!
作者: huangjunhui 时间: 2015-10-28 23:42
顶。不错,支持。
作者: 帮助信息 时间: 2015-10-31 16:17
w为什么看不懂啊。。
作者: 传奇查 时间: 2015-11-29 20:32
发现大家的答案各种Bug~~发个无bug版本的~代码用的是笨方法~
容易的方法是定义四个变量d,h,m,s
当d,h,m,s等于0时,不输出,大于0时才输出
- package cn.itheima.test;
- /**
- * 1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
- * 键盘输入6,打印6秒;
- * 键盘输入60,打印1分;
- * 键盘输入66,打印1分6秒;
- * 键盘输入666,打印11分6秒;
- * 键盘输入3601,打印1小时1秒
- */
- import java.util.*;
- public class Test1 {
- public static void main(String[] args) {
- System.out.println("请输入正整数:");
- Scanner sc = new Scanner(System.in);
- int x = sc.nextInt();
- if(x>0&&x<60){//控制秒
- System.out.println(x+"秒");
- }else if(x>=60&&x<3600){//控制分
- if(x%60==0){
- System.out.println(x/60+"分");
- }else{
- System.out.println(x/60+"分"+x%60+"秒");
- }
- }else if(x>=3600&&x<(3600*24)){//控制小时
- if(x%3600==0){
- System.out.println(x/3600+"小时");
- }else if(x%60==0){
- System.out.println(x/3600+"小时"+x%3600+"秒");
- }else{
- if(x%3600<60){//超过某小时,但是还没到达分的情况
- System.out.println(x/3600+"小时"+x%60+"秒");
- }else{
- System.out.println(x/3600+"小时"+(x%3600)/60+"分"+x%60+"秒");
- }
- }
- }else if(x>=(3600*24)){//控制天
- if(x%(3600*24)==0){
- System.out.println(x/(3600*24)+"天");
- }else if(x%3600==0){
- System.out.println(x/(3600*24)+"天"+x/3600+"小时");
- }else if(x%60==0){
- System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分");
- }else{
- if(x%(3600*24)<60){//超过某天,但是还未到分的情况
- System.out.println(x/(3600*24)+"天"+x%60+"秒");
- }else if(x%(3600*24)<3600){//超过某天某分,但是还未到达小时的情况
- System.out.println(x/(3600*24)+"天"+x/60+"分"+x%60+"秒");
- }else{
- System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分"+x%60+"秒");
- }
- }
- }else{
- System.out.println("时间格式不正确");
- }
- }
- }
复制代码
作者: VisionDo 时间: 2015-12-8 15:01
- import java.math.BigDecimal;
- import java.util.Scanner;
- /*
- * 从键盘接受一个数字,打印该数字表示的时间,最大单位到天
- *
- */
- public class Test3 {
- public static void main(String[] args) {
-
- final int MAX_INPUT_NUM = 31*24*60*60;//用户可输入的最大数值
- double InputNum;
-
- Scanner sc = new Scanner(System.in);
- System.out.print("请输入任意正数:");
- InputNum = sc.nextDouble();
-
- //数据有效性检查
- while(InputNum<0 || InputNum > MAX_INPUT_NUM ){
- System.out.print("数据有误,请重新输入:");
- InputNum = sc.nextDouble();
- }
-
- //转换时间
- Num_To_Time(InputNum);
- }
-
-
- /**
- *
- * @param num 用户输入的数字
- *
- * 根据用户输入的数值(包括小数),输出对应的时间
- *
- */
- private static void Num_To_Time(double num){
-
- int time = double_to_int(num);
-
- int h,m,s,d;
- String Info = "";
-
- d = time/(3600*24);//得到日数
- h = (time - d*3600*24)/3600;//得到小时
- m = (time-d*3600*24-h*3600)/60;//得到分钟
- s = time%60;//得到秒
- /*
- * 求余的话,小时和分钟的分母可能为0,减法就避免了这个问题
- *
- */
-
-
- Info = d+"天"+h+"小时"+m+"分"+s+"秒";//得到标准的时间范式
- /*
- * 数据有可能为 10天0小时20分3秒
- * 下面的判断过程就避免了出现错误结果:1天23秒
- * 1 0天 0小时2 0分 3秒
- * 其中, 0天 0小时 0分均不会被替换掉
- *
- */
- if(d < 10){
- Info = Info.replace("0天", "");
- }
-
- if(h < 10)
- Info = Info.replace("0小时", "");
-
- if(m < 10)
- Info = Info.replace("0分", "");
- if(s < 10)
- Info = Info.replace("0秒", "");
-
- System.out.println(Info);
- }
-
- /**
- * @param DoubleNum double型数值
- * [url=home.php?mod=space&uid=84843]@Return[/url] DoubleNum四舍五入后的整型数值
- *
- * eg.
- * DoubleNum = 4.34 return 4
- * DoubleNum = 4.64 return 5
- *
- */
- private static int double_to_int(double DoubleNum){
- int IntNum;
- BigDecimal BD = new BigDecimal(DoubleNum);
- IntNum =BD.setScale(0, BigDecimal.ROUND_HALF_UP).intValue();//四舍五入取整
- return IntNum;
- }
-
-
- }
复制代码
作者: misy1118 时间: 2015-12-26 16:28
哪来的216000秒这么多啊--!
作者: climb 时间: 2016-5-19 18:35
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if (num>=0&&num<60) {
System.out.println(num+"秒");
}else if (num==60) {
System.out.println("1分");
}else if (num>60&&num<3600) {
System.out.println(num/60+"分"+num%60+"秒");
}else if (num==3600) {
System.out.println("1小时");
}else if (num>3600&&num<86400) {
System.out.println(num/3600+"小时"+(num-3600)/60%60+"分"+num%60+"秒");
}else if (num==86400) {
System.out.println("1天");
}else if (num>86400) {
System.out.println(num/86400+"天"+(num-86400)/3600%24+"小时"+(num-86400)/60%60+"分钟"+num%60+"秒");
}
作者: zhoujiegun 时间: 2016-6-5 11:48
我就被考到这题了,太扯,当时没做出来,后来做出来了 下面看代码
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num < 60 && num>=0){
System.out.println(num+"秒");
}else if ((num == 60 )){
System.out.println(num/60+"分");
}else if(num>60 && num<3600){
System.out.println(num/60+"分"+num%60+"秒");
}else if(num == 3600){
System.out.println(num/60/60+"小时");
}else if(num>3600 && num<86400){
System.out.println(num/60/60+"小时"+num/60%60+"分"+num%60+"秒");
}else if(num==86400){
System.out.println(num/24/60/60+"天");
}else if(num >86400){
System.out.println(num/24/60/60+"天"+ num/60/60%24+"小时"+num/60%60+"分"+num%60+"秒");
}
作者: zhoujiegun 时间: 2016-6-11 19:39
我想这才是楼主要的效果. 复制到main方法中测试
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num < 60 && num>=0){
System.out.println(num+"秒");
}else if ((num == 60 )){
System.out.println(num/60+"分");
}else if(num>60 && num<3600){
System.out.println(num/60+"分"+num%60+"秒");
}else if(num == 3600){
System.out.println(num/60/60+"小时");
}else if(num>3600 && num<86400){
System.out.println(num/60/60+"小时"+num/60%60+"分"+num%60+"秒");
}else if(num==86400){
System.out.println(num/24/60/60+"天");
}else if(num >86400){
System.out.println(num/24/60/60+"天"+ num/60/60%24+"小时"+num/60%60+"分"+num%60+"秒");
}
作者: 折花道人 时间: 2016-8-23 16:14
本帖最后由 折花道人 于 2016-8-23 16:16 编辑
import java.util.Date;
import java.util.Scanner;
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int num = sc.nextInt();
StringBuilder sb = new StringBuilder();
Date date = new Date(num * 1000);
int day = date.getDate() - 1;
int hours = date.getHours() - 8;
int min = date.getMinutes();
int sec = date.getSeconds();
if(day> 0) {
sb.append(day).append("天");
}
if(hours> 0) {
sb.append(hours).append("小时");
}
if(min > 0) {
sb.append(min).append("分");
}
if(sec > 0) {
sb.append(sec).append("秒");
}
System.out.println(sb);
}
}
别问我为啥用这过时的方法,面试老师逼的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |