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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 漫天沙飞 于 2014-3-23 12:01 编辑



  1. import java.util.Scanner;
  2. public class Test {
  3.         //扫描控制台输入
  4.         public static Scanner sc;   
  5.             public static void main(String[] args)  
  6.             {  
  7.                 sc = new Scanner(System.in); //创建Scanner实例
  8.                 while(true)  
  9.                 {  
  10.                     System.out.println("您输入的数字是:");  
  11.                     int num = sc.nextInt();
  12.                     printTime(num);  
  13.                 }  
  14.          
  15.             }  
  16.             //将输入数字转换成对应的时间  
  17.             public static void printTime(int num)  
  18.             {  
  19.                 int[] arr = new int[4]; //创建一个包含4个元素的数组
  20.                 int pos = arr.length;  //创建指针
  21.                 while(num > 0)  [color=Red]//这个循环是怎么运行的[/color]
  22.                 {  
  23.                     int tmp = num % 60;
  24.                     arr[--pos] = tmp;  
  25.                     num = num / 60;   
  26.                     //对小时进行处理(分秒是60进制,小时是24进制)  
  27.                     if(24 <= arr[1] )  
  28.                     {  
  29.                         arr[0] = arr[1] / 24;  
  30.                         arr[1] = arr[1] % 24;  
  31.                     }  
  32.                 }  
  33.          
  34.                      
  35.                 //遍历数组后,按格式输出  
  36.                 for(int i = 0; i < arr.length; ++i)  
  37.                 {  
  38.                     if(arr[i] != 0)  
  39.                     {  
  40.                         switch(i)  
  41.                         {  
  42.                             case 0:System.out.print(arr[i] + " 天 "); break;  
  43.                             case 1:System.out.print(arr[i] + " 时 "); break;  
  44.                             case 2:System.out.print(arr[i] + " 分 "); break;  
  45.                             case 3:System.out.print(arr[i] + " 秒 "); break;  
  46.                             default:break;  
  47.                         }  
  48.                     }  
  49.                 }  
  50.          
  51.                 System.out.println();  
  52.             }  
  53.          

  54. }


复制代码

上面那个while循环里面搞不懂什么意思,求指点

5 个回复

倒序浏览
一年_Hei 来自手机 中级黑马 2014-3-23 10:43:09
沙发
这是基础题。我也做过。。。
回复 使用道具 举报
while(true)表示无限循环,那就是无限循环里面的内容,意思就是一直在接受键盘输入的数字,你输入一个数字它接收了,但是程序并没有终止,而是继续等待键盘的输入
回复 使用道具 举报
while(true)中主要是将计算出的天、时、分、秒的数值分别装入数组中的arr[0],arr[1],[2],[3]中。
例如:输入的数值是3601,
while (num > 0)   //3601大于0,执行循环
                {
                        int tmp = num % 60;  //temp=1,
                        arr[--pos] = tmp;   //由于pos的值为4,所以arr[3]=1;
                        num = num / 60;   //num=60
                        /*此时由于num>0,继续循环上面的代码,可以计算出arr[2]=0; num=1,
再次循环的arr[1]=1,num=0;  此时在往下执行代码,arr[1]=1<24, 得出arr[0]=0;所以数组装入的数据为{0,1,0,1}
再通过后面的for循环得出相应的天、时、分、秒。  */
                        if (24 <= arr[1]) {
                                arr[0] = arr[1] / 24;
                                arr[1] = arr[1] % 24;
                        }
                }

代码中的这句话应该是错误的,这个语句加入进去编译也通过不了啊!!!
上面只是列举的一个比较特殊的num,其他数字的执行原理是一样的。
可能解释的不是很好,希望见谅。:)
回复 使用道具 举报
松毛 发表于 2014-3-23 11:26
while(true)中主要是将计算出的天、时、分、秒的数值分别装入数组中的arr[0],arr[1],[2],[3]中。
例如:输 ...

谢了,懂了,后面那个是要判断天数的,当输入数很大时(10000),可能arr[1]>=24,这时才用到这一句
回复 使用道具 举报
漫天沙飞 发表于 2014-3-23 11:57
谢了,懂了,后面那个是要判断天数的,当输入数很大时(10000),可能arr[1]>=24,这时才用到这一句 ...

错了,少输入了一个0,应该是100000
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马