黑马程序员技术交流社区

标题: 代码哪里出了问题? [打印本页]

作者: 丶小天    时间: 2014-2-24 15:39
标题: 代码哪里出了问题?
题目是找出十进制整数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);
        }
       
}
作者: luoanjade    时间: 2014-2-26 19:32
这段代码是正确的呀,你这是看不懂这段代码?还是。。。
首先,在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”。

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2