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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

楼上你写程序是不是很烂?



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+"秒");
                  }        
        }
         }
回复 使用道具 举报
输入字符不可以啊
回复 使用道具 举报
学习一下
回复 使用道具 举报
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("输入的时间不对");  
                  }  
        }
}
回复 使用道具 举报
学习一下!!
回复 使用道具 举报

学习学习呵呵
回复 使用道具 举报
ZHAOWEI 发表于 2014-5-25 11:11
package com.itheima;

import java.util.Scanner;

不赖,这个方法吊,我自己写的那就是一坨shit
回复 使用道具 举报
进来学习学习!
回复 使用道具 举报
学习一下!
回复 使用道具 举报
顶。不错,支持。
回复 使用道具 举报
w为什么看不懂啊。。
回复 使用道具 举报
发现大家的答案各种Bug~~发个无bug版本的~代码用的是笨方法~

容易的方法是定义四个变量d,h,m,s
当d,h,m,s等于0时,不输出,大于0时才输出
  1. package cn.itheima.test;
  2. /**
  3. * 1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
  4. *                 键盘输入6,打印6秒;
  5. *                 键盘输入60,打印1分;
  6. *                 键盘输入66,打印1分6秒;
  7. *                 键盘输入666,打印11分6秒;
  8. *                 键盘输入3601,打印1小时1秒
  9. */
  10. import java.util.*;
  11. public class Test1 {
  12.         public static void main(String[] args) {
  13.                 System.out.println("请输入正整数:");
  14.                 Scanner sc = new Scanner(System.in);
  15.                 int x = sc.nextInt();
  16.                 if(x>0&&x<60){//控制秒
  17.                         System.out.println(x+"秒");
  18.                 }else if(x>=60&&x<3600){//控制分
  19.                         if(x%60==0){
  20.                                 System.out.println(x/60+"分");
  21.                         }else{
  22.                         System.out.println(x/60+"分"+x%60+"秒");
  23.                         }
  24.                 }else if(x>=3600&&x<(3600*24)){//控制小时
  25.                         if(x%3600==0){
  26.                                 System.out.println(x/3600+"小时");
  27.                         }else if(x%60==0){
  28.                                 System.out.println(x/3600+"小时"+x%3600+"秒");
  29.                         }else{
  30.                                 if(x%3600<60){//超过某小时,但是还没到达分的情况
  31.                                         System.out.println(x/3600+"小时"+x%60+"秒");
  32.                                 }else{
  33.                                         System.out.println(x/3600+"小时"+(x%3600)/60+"分"+x%60+"秒");
  34.                                 }
  35.                         }
  36.                 }else if(x>=(3600*24)){//控制天
  37.                         if(x%(3600*24)==0){
  38.                                 System.out.println(x/(3600*24)+"天");
  39.                         }else if(x%3600==0){
  40.                                 System.out.println(x/(3600*24)+"天"+x/3600+"小时");
  41.                         }else if(x%60==0){
  42.                                 System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分");
  43.                         }else{
  44.                                 if(x%(3600*24)<60){//超过某天,但是还未到分的情况
  45.                                         System.out.println(x/(3600*24)+"天"+x%60+"秒");
  46.                                 }else if(x%(3600*24)<3600){//超过某天某分,但是还未到达小时的情况
  47.                                         System.out.println(x/(3600*24)+"天"+x/60+"分"+x%60+"秒");
  48.                                 }else{
  49.                                         System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分"+x%60+"秒");
  50.                                 }
  51.                         }
  52.                 }else{
  53.                         System.out.println("时间格式不正确");
  54.                 }       
  55.         }
  56. }
复制代码



回复 使用道具 举报
  1. import java.math.BigDecimal;
  2. import java.util.Scanner;

  3. /*
  4. * 从键盘接受一个数字,打印该数字表示的时间,最大单位到天
  5. *
  6. */
  7. public class Test3 {

  8.         public static void main(String[] args) {
  9.                
  10.                 final int MAX_INPUT_NUM = 31*24*60*60;//用户可输入的最大数值
  11.                 double InputNum;
  12.                
  13.                 Scanner sc = new Scanner(System.in);
  14.                 System.out.print("请输入任意正数:");
  15.                 InputNum = sc.nextDouble();
  16.                
  17.                 //数据有效性检查
  18.                 while(InputNum<0 || InputNum >  MAX_INPUT_NUM  ){
  19.                         System.out.print("数据有误,请重新输入:");
  20.                         InputNum = sc.nextDouble();       
  21.                 }
  22.                
  23.                 //转换时间
  24.                 Num_To_Time(InputNum);

  25.         }
  26.        
  27.        
  28.         /**
  29.          *
  30.          * @param num 用户输入的数字
  31.          *   
  32.          * 根据用户输入的数值(包括小数),输出对应的时间
  33.          *
  34.          */
  35.         private static void Num_To_Time(double num){
  36.                
  37.                 int time = double_to_int(num);
  38.                
  39.                 int h,m,s,d;
  40.                 String Info = "";
  41.                
  42.                 d = time/(3600*24);//得到日数
  43.                 h = (time - d*3600*24)/3600;//得到小时  
  44.                 m = (time-d*3600*24-h*3600)/60;//得到分钟  
  45.                 s = time%60;//得到秒
  46.                 /*
  47.                  * 求余的话,小时和分钟的分母可能为0,减法就避免了这个问题
  48.                  *
  49.                  */
  50.                
  51.                
  52.                 Info = d+"天"+h+"小时"+m+"分"+s+"秒";//得到标准的时间范式
  53.                 /*
  54.                     * 数据有可能为 10天0小时20分3秒
  55.                     * 下面的判断过程就避免了出现错误结果:1天23秒
  56.                     * 1 0天 0小时2 0分 3秒
  57.                     * 其中, 0天 0小时 0分均不会被替换掉
  58.                     *
  59.                     */
  60.                 if(d < 10){
  61.                         Info = Info.replace("0天", "");
  62.                 }
  63.                
  64.                 if(h < 10)
  65.                         Info = Info.replace("0小时", "");
  66.                
  67.                 if(m < 10)
  68.                         Info = Info.replace("0分", "");

  69.                 if(s < 10)
  70.                         Info = Info.replace("0秒", "");
  71.                
  72.                 System.out.println(Info);
  73.         }
  74.        

  75.         /**
  76.          * @param DoubleNum double型数值
  77.          * [url=home.php?mod=space&uid=84843]@Return[/url] DoubleNum四舍五入后的整型数值
  78.          *
  79.          * eg.
  80.          *   DoubleNum = 4.34 return 4
  81.          *   DoubleNum = 4.64 return 5
  82.          *   
  83.          */
  84.         private static int double_to_int(double DoubleNum){
  85.                 int IntNum;
  86.                 BigDecimal BD = new BigDecimal(DoubleNum);
  87.                 IntNum =BD.setScale(0, BigDecimal.ROUND_HALF_UP).intValue();//四舍五入取整
  88.                 return IntNum;
  89.         }
  90.        
  91.        
  92. }
复制代码
回复 使用道具 举报
孤鸢 发表于 2014-8-22 23:44
我自己解决的

审核过了发出来的,

哪来的216000秒这么多啊--!
回复 使用道具 举报
climb 中级黑马 2016-5-19 18:35:38
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+"秒");
                }
回复 使用道具 举报
我就被考到这题了,太扯,当时没做出来,后来做出来了   下面看代码
                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+"秒");
                       
                }
回复 使用道具 举报
我想这才是楼主要的效果. 复制到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: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);
        }
}

别问我为啥用这过时的方法,面试老师逼的
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马