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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyy666 中级黑马   /  2014-6-6 23:57  /  1529 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wyy666 于 2014-6-7 10:01 编辑

import java.util.Scanner;
public class Test2 {
/*从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒*/
public static void main(String[] args)throws ArithmeticException {
  // TODO Auto-generated method stub
   final int DAY=60^60^24;
   final int HOUR=60^60;
   Scanner reader=new Scanner(System.in);
   int time=reader.nextInt();
   System.out.println("键盘输入的时间为" + time + "秒");
   String  TIME = null;
         if(time>=DAY){
          int day=time/DAY;
          TIME=day+"天";}
         if(time%DAY>=HOUR){
          int hour=(time%DAY)/HOUR;
          TIME=TIME+hour+"时";}
         if(time%DAY%HOUR>=60){
          int min=time%DAY%HOUR/60;
          int sec=time%DAY%HOUR%60;
          TIME=TIME+min+"分"+sec+"秒";}
        System.out.println( TIME);
           
          }
         
         }
      //异常   Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.itheima.Test2.main(Test2.java:28)

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
同学,,这是一个基本的异常,表示为你的表达式中,有一个除数为零了!
关键在于!!final int DAY=60^60^24;  final int HOUR=60^60;这两句,为什么要这样写!"^ "这是一个位运算符,表示异或!60^60^24结果为24!60^60结果为零!所以当程序执行到
       if(time%DAY%HOUR>=60){
          int min=time%DAY%HOUR/60;
          int sec=time%DAY%HOUR%60;
          TIME=TIME+min+"分"+sec+"秒";}
这段代码时就发生了错误!你可以打印出DAY,和HOUR的值看一下,一个为24.一个为0
正确的写法应该是           final int DAY=60*60*24;
                   final int HOUR=60*60;
这才是你想要的值!!最后,把代码全部写完应该是这样!
                       public static void main(String[] args) {
                  // TODO Auto-generated method stub
                   final int DAY=60*60*24;
                   final int HOUR=60*60;
                   Scanner reader=new Scanner(System.in);
                   int time=reader.nextInt();
                   System.out.println("键盘输入的时间为" + time + "秒"+HOUR);
                   String  TIME = "";
                         if(time>=DAY){
                          int day=time/DAY;
                          TIME=day+"天";}
                         if(time%DAY>=HOUR){
                          int hour=(time%DAY)/HOUR;
                          TIME=TIME+hour+"时";}
                         if(time%DAY%HOUR>=60){
                          int min=time%DAY%HOUR/60;
                          int sec=time%DAY%HOUR%60;
                          TIME=TIME+min+"分"+sec+"秒";}
                        System.out.println( TIME);
                          }

都 不用写throws来抛异常的,还有,,运行时的异常不是这样处理的!!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
沉默的爱 发表于 2014-6-7 00:24
同学,,这是一个基本的异常,表示为你的表达式中,有一个除数为零了!
关键在于!!final int DAY=60^60^2 ...

不好意思,把(*)写成了(^),是自己的失败,再次感谢纠正

点评

嘿 嘿 ,,小事咯!  发表于 2014-6-7 09:15
回复 使用道具 举报
遇到异常应先看看抛出的异常信息,然后考虑处理方式!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马