黑马程序员技术交流社区
标题:
关于前几天我写的一个小程序发现有Bug,在此做一下优化
[打印本页]
作者:
和鹏
时间:
2015-4-9 10:26
标题:
关于前几天我写的一个小程序发现有Bug,在此做一下优化
/*
3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
*/
/*
程序的基本设计思路:
对用户的输入,都从最大单位天开始做逐层向下的判断,所谓的逐层向下及从天向秒开始判断。
当最终判断到秒时,也就意味着用户输入的这个数已经被转化成了时间。
*/
import java.util.*;
class Test_3
{
public static void main(String[] args)
{
zhuanhuantime();
}
/**
*该方法用于接收用户从输入设备输入的数字
*/
public static int getNumber()
{
Scanner input=new Scanner(System.in);
System.out.println("请输入一个正整数");
int num=input.nextInt();
return num;
}
/**
*该方法用于将用户输入的数字视作秒数,转换成相对应的时间。(最大单位到天)
*/
public static void zhuanhuantime()
{
int num = getNumber();
/**
*分别定义了tian(天)、shi(小时)、fen(分钟)、miao(秒),4个变量。
*/
int tian,shi,fen,miao;
boolean falg = true; // 这个变量用于结束循环
while(falg)
{
/**
*用于判断用户输入的数字是否是正整数。
*/
if(num<0)
{
System.out.println("输入的数据错误,请重新输入!");
int tempnum = getNumber(); // tempnum 这个临时变量用于在此接收用户的输入,然后将tempnum赋值给num,再进行判断。
num = tempnum;
}
/**
*将用户输入的数字转化到秒
*/
if ((num>=0)&&(num<60))
{
System.out.print(num+"秒");
falg = false; // 当用户输入的数字被解析到秒时,跳出循环
}
/**
*将用户输入的数字转化到分钟
*/
if((num>=60)&&(num<3600))
{
fen = num/60;
miao = num%60;
num = miao;
System.out.print(fen+"分钟");
}
/**
*将用户输入的数字转化到小时
*/
if((num>=3600)&&(num<86400))
{
int temp;
shi = num/3600;
fen = num%60;
temp = num%3600;
num = temp;
System.out.print(shi+"小时");
}
/**
*将用户输入的数字转化到天
*/
if(num>=86400)
{
int temp;
tian = num/86400;
temp = num%86400;
num =temp;
System.out.print(tian+"天");
}
}
}
}
作者:
和鹏
时间:
2015-4-9 10:27
这次我记得写注释了
作者:
百思不得解
时间:
2015-4-9 16:54
不错学习了,分析思路明白了,也就看懂了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2