黑马程序员技术交流社区
标题:
关于if else语句
[打印本页]
作者:
万彪
时间:
2014-5-22 14:07
标题:
关于if else语句
我是刚刚开始自学一个星期的小白,今天没事,去找了下前辈们做的练习,苦思冥想了半个小时,搞出个看上去一点也不简练的代码,满以为应该没什么错误,但怎么运行的时候else的语句也跟着冒出来了,不是说,当以上都不成立的时候,才执行的语句吗,这是我运行的结果
QQ截图20140522140724.jpg
(12.54 KB, 下载次数: 1)
下载附件
2014-5-22 14:08 上传
class shijian
{
public static void main(String[] args)
{
getshijian(3600);
}
public static void getshijian(int num)
{
int miao;
int fen;
int shi;
int tian;
if (num<60 && num>=0)
{
System.out.println(num+"秒");
}
if (num<3600 && num>=60)
{
fen = num/60;
miao = num%60;
System.out.println(fen+"分钟"+miao+"秒");
}
if (num<86400 && num>=3600)
{
shi = num/3600;
fen = num%3600/60;
miao = num%3600%60;
System.out.println(shi+"小时"+fen+"分钟"+miao+"秒");
}
if (num>86400)
{
tian = num/86400;
shi = num%86400/3600;
fen = num%86400%3600/60;
miao = num%86400%3600%60;
System.out.println(tian+"天"+shi+"小时"+fen+"分钟"+miao+"秒");
}
else
{
System.out.println("没有负数表示的时间");
}
}
}
复制代码
作者:
黑马-王宁
时间:
2014-5-22 14:26
class shijian
{
public static void main(String[] args)
{
getshijian(-66);
}
public static void getshijian(int num)
{
int miao;
int fen;
int shi;
int tian;
if (num<60 && num>=0)
{
System.out.println(num+"秒");
}
else if (num<3600 && num>=60)
{
fen = num/60;
miao = num%60;
System.out.println(fen+"分钟"+miao+"秒");
}
else if (num<86400 && num>=3600)
{
shi = num/3600;
fen = num%3600/60;
miao = num%3600%60;
System.out.println(shi+"小时"+fen+"分钟"+miao+"秒");
}
else if (num>86400)
{
tian = num/86400;
shi = num%86400/3600;
fen = num%86400%3600/60;
miao = num%86400%3600%60;
System.out.println(tian+"天"+shi+"小时"+fen+"分钟"+miao+"秒");
}
else
{
System.out.println("没有负数表示的时间");
}
}
}
复制代码
根据你写的稍作修改
作者:
木华
时间:
2014-5-22 14:34
我学过一段时间c语言,if else语句使用是有规则的,if和自己最近的else配对,所以最后一个else和最后一个if配对,你的程序执行时到最后一个if时就是不满足条件呀,所以else语句自然要执行了。可以在第一个if之前再加一个if语句,if(num>0)代码如下:class shijian
{
public static void main(String[] args)
{
getshijian(3600);
}
public static void getshijian(int num)
{
int miao;
int fen;
int shi;
int tian;
if(num>0)
{
if (num<60 && num>=0)
{
System.out.println(num+"秒");
}
if (num<3600 && num>=60)
{
fen = num/60;
miao = num%60;
System.out.println(fen+"分钟"+miao+"秒");
}
if (num<86400 && num>=3600)
{
shi = num/3600;
fen = num%3600/60;
miao = num%3600%60;
System.out.println(shi+"小时"+fen+"分钟"+miao+"秒");
}
if (num>86400)
{
tian = num/86400;
shi = num%86400/3600;
fen = num%86400%3600/60;
miao = num%86400%3600%60;
System.out.println(tian+"天"+shi+"小时"+fen+"分钟"+miao+"秒");
}}
else
{
System.out.println("没有负数表示的时间");
}
}
}
作者:
向前看向前走
时间:
2014-5-22 15:43
没有那么复杂,你没有返回语句,所以所以所有的if else 都执行,加上返回语句就可以,具体如下:
class shijian
{
public static void main(String[] args)
{
getshijian(3600);
}
public static void getshijian(int num)
{
int miao;
int fen;
int shi;
int tian;
if (num<60 && num>=0)
{
System.out.println(num+"秒");
}
if (num<3600 && num>=60)
{
fen = num/60;
miao = num%60;
System.out.println(fen+"分钟"+miao+"秒");
return;
}
if (num<86400 && num>=3600)
{
shi = num/3600;
fen = num%3600/60;
miao = num%3600%60;
System.out.println(shi+"小时"+fen+"分钟"+miao+"秒");
return;
}
if (num>86400)
{
tian = num/86400;
shi = num%86400/3600;
fen = num%86400%3600/60;
miao = num%86400%3600%60;
System.out.println(tian+"天"+shi+"小时"+fen+"分钟"+miao+"秒");
return;
}
else
{
System.out.println("没有负数表示的时间");
}
}
}
作者:
寻找人生目标
时间:
2014-5-22 15:50
//你的代码改了下 注意看下注释 有些小问题
//之前你穿的是3600 第一个if满足 而第二个if不满足 又正好 你说的else距离第二个if较近 所以else执行了
//希望能帮到你
class Times { //这里类名每个单词的首字母应该大写
public static void main(String[] args) {
getTimes(3600);
}
public static void getTimes(int num) { //这里方法名第二个单词首字母应该大写
int miao;
int fen;
int shi;
int tian;
if (num<60 && num>=0) {
System.out.println(num+"秒");
} else if (num<3600 && num>=60) {
fen = num/60;
miao = num%60;
System.out.println(fen+"分钟"+miao+"秒");
} else if (num<86400 && num>=3600) {
shi = num/3600;
fen = num%3600/60;
miao = num%3600%60;
System.out.println(shi+"小时"+fen+"分钟"+miao+"秒");
} else if (num>86400) {
tian = num/86400;
shi = num%86400/3600;
fen = num%86400%3600/60;
miao = num%86400%3600%60;
System.out.println(tian+"天"+shi+"小时"+fen+"分钟"+miao+"秒");
}else {
System.out.println("没有负数表示的时间");
}
}
}
复制代码
作者:
周俊波
时间:
2014-5-22 16:02
你都没用到else if 你要判断多次就要用这个 要不然if后面 继续if 接还是if 会继续从新判断,而不会算上你前一个if的判断结果了
作者:
万彪
时间:
2014-5-22 17:28
谢谢大家,感觉理解了
作者:
code2014
时间:
2014-5-22 17:35
学习~~~~~
作者:
stream
时间:
2014-5-22 17:36
学习一下
作者:
13556793092
时间:
2014-5-22 17:45
你的else是针对的最后一个if语句的,就是当最后一个if条件不满足,才执行else语句,而你输入进来的是3600,
那你当然没满足最后一个条件啊,所以else就运行了。
作者:
飘渺≮★耘
时间:
2014-5-23 11:35
else配的是if(num>86400),你num不大于86400,所以就执行了,你要用else if(num>86400)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2