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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丶小天 中级黑马   /  2014-2-24 15:39  /  1045 人查看  /  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技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
这段代码是正确的呀,你这是看不懂这段代码?还是。。。
首先,在D类中,创建一个非静态的方法(非静态的方法,只有类的对象才能调用)maxDigit,因为是void修饰的,所以这个方法没有返回值。该方法有一个int类型的参数,也就是说,只要是传入一个int类型的数据,他就能帮你处理。然后这个方法的功能你也知道了,就是找最大的数和这个数的位置。为了实现这个功能,它使用了,取余数(%)和取商(/)的办法。用传入的参数循环对10取余数和取商。余数就是“各位”数,商就是每去掉最后一个数后的数。
文字描述不清,给你举个例子吧:就如你上面的数字5674
第一次:5674%10=4 ,5674/10=567,第二次 :567%10=7, 567/10=56,第三次:56%10=6,56/10=5
最后:5%10=5,5/10=0;
你上面定义的一个计数器y,就是每计算一次,计一次数,并且把最大的数和位置赋给相应的c和x
以上这个就是这个方法的解释。

下面再说说调用的事。上面也说了,maxDigit是一个非静态的方法,只能创建一个对象來调用他。于是在main函数中创建了对象"D d =new D()";使用对象的引用來调用上面定义的方法,并传入参数“5674”。

不知道这是不是你想要的答案!

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马