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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhuyuanqing 注册黑马   /  2011-10-6 23:39  /  1616 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

找出十进制整数n各位中最大且最高位的那个数字。例如:237127,该方法输出7,4;表示最大数字是7,在第4位上;
方法如下:
void maxDigit(int n){
                int c=0,d,x=0,y=0;
                while(n>0){
                        d=n%10;
                        y++;
                        if(d>=c){
                                c=d;x=y;
                        }n/=10;
                }System.out.println(c+","+x);
        }
但我实际代入主函数时,用下面的值代入来运行的。但不知道为什么是这个过程,麻烦帮忙看下,给我详细讲下啊!
package lang;
import java.util.*;
class D{
        void maxDigit(int n){
                int c=0,d,x=0,y=0;
                while(n>0){
                        d=n%10;
                        y++;
                        if(d>=c){
                                c=d;x=y;
                        }n/=10;
                }System.out.println(c+","+x);
        }
}
public class A{
        public static void main(String[] args){
D d=new D();
d.maxDigit(5674);
        }
       
}

1 个回复

倒序浏览
本帖最后由 林国锋 于 2011-10-7 00:28 编辑

  1.         void maxDigit(int n){// 5674
  2.                 int c=0,d,x=0,y=0;
  3.                 while(n>0){ //①true ②true ③true ④true ⑤false退出循环了
  4.                         d=n%10; //①d=4 ②d=7 ③d=6 ④d=5
  5.                         y++; //①y=1 ②y=2 ③y=3 ④y=4
  6.                         if(d>=c){ //①true ②true ③false ④false   第三第四次是因为c=7没有变化
  7.                                 c=d; //①c=4 ②c=7 ③c=7 ④c=7
  8.                                 x=y; //①x=1 ②x=2 ③x=2 ④x=2
  9.                         }
  10.                         //n/=10;
  11.                         n = n/10; //①n=567 ②n=56 ③n=5 ④n=0
  12.                 }
  13.                 System.out.println(c+","+x);
  14.         }
复制代码
首先传入5674

-------------第一次循环
然后判断5674是否大于0,大于则d等于5674除以10取余数为4
此时,d=4,y=1,c=0
则d >= c 成立
此时,c = d = 4,x = y = 1, n /= 10 即 n = 5674/10 ,由于n是int类型,所以此时n就为567
此时的n=567满足条件,继续循环,此次循环得到的关键值是x=1,c=4

-------------第二次循环
此时567除以10取余数为7,d=7,y=2,c=7
则d >= c成立
此时,c = d = 7,x = y = 2, n /= 10 即 n = 567/10 ,由于n是int类型,所以此时n就为56
此时的n=56满足条件,继续循环,此次循环得到的关键值是x=2,c=7

-------------第三次循环
此时56除以10取余数为6,d=6,y=3,c=7
则d >= c不成立,故c没有改变,x也没有改变
此时 n /= 10 即 n = 56/10 ,由于n是int类型,所以此时n就为5
此时的n=5满足条件,继续循环,此次循环得到的关键值是x=2,c=7

-------------第四次循环
此时5除以10取余数为5,d=5,y=4,c=7
则d >= c不成立,故c没有改变,x也没有改变
此时 n /= 10 即 n = 5/10 ,由于n是int类型,所以此时n就为0
此时 n > 0 不成立,退出循环,此次循环得到的关键值是x=2,c=7

得到c=7 x=2
输出:7,2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马