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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-8-25 11:17 编辑

【黑马程序员济南】JavaEE基础阶段必会案例NO.1

         黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础阶段第4天的一个小案例。

         案例要求:设计一个程序,用户输入一个整数,返回这个整数是几位数,要求用到方法的相关知识。

         案例分析:我们要用到的知识点:键盘录入(分为3步),方法(参数是整数,有返回值,返回值也是整数)

         分析完一个大概以后我们可以写出以下代码:
           
[Java] 纯文本查看 复制代码
public class Test07_jiWeiShu {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                int num = sc.nextInt();
        }
        public static int method(int num){
                
                return 0;
        }
}

         
     接下来我们的任务就是找到一个方法,如何计算这个整数是几位数。首先要明确一件事:我们生活中用的数是几进制的??    当然,是十进制的,满10进1 。也就是说假设我们用户输入的是1234这个数。
    我们把1234 / 10 得到的是123,因为java语言里整数相除得到的整数,也就是只保留商。
    我们把123 / 10 得到的是12
    12 / 10 得到 1
    1 / 10 得到 0
    我们一共除了几次10?  数一下,我们除了4次,这个数正好也是4位数,好了,规律已经出来了。
    我们总结一下: 对于一个我们不确定它位数的任意整数,我们不断的让它除10,直到商是0为止,我们统计出一共除了几次就知道它是几位数了(求和思想),因此我们要用到循环,循环结束的条件就是结果为0 就停止,ok分析结束,是时候展现真正的技术了!

[Java] 纯文本查看 复制代码
public class Test07_jiWeiShu {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数:");
                int num = sc.nextInt();
        }
        public static int method(int num){
                int count = 1;                     //定义一个计数器变量
                while(num / 10 != 0) {  //如果num/10不是0,说明它至少是个2位数
                        num = num /10;          //让num不断的除10
                        count ++;               //同时让计数器增加
                }
                return count;                        //循环结束,返回count
        }
}

  好的,这个方法我们已经写完了,但是要注意,方法不调用是不执行的,因此我们要在main方法中调用这个方法,怎么调用方法?  直接写方法名(),括号里填写需要传入的参数,如果一个方法不需要参数那就只写个括号就行了。
  有的方法有返回值,就需要我么用变量接收返回值,这里要注意变量的数据类型要和返回值的数据类型一致。我们这里是int类型的。不是所有的方法都有返回值,没有就不用接收啦。
  ok,让我们完成这个代码:
[Java] 纯文本查看 复制代码
public class Test07_jiWeiShu {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数:");
                int num = sc.nextInt();
                int count = method(num);
                System.out.println(num+"是一个"+count+"位数。");
        }
        public static int method(int num){
                int count = 1;                     //定义一个计数器变量
                while(num / 10 != 0) {  //如果num/10不是0,说明它至少是个2位数
                        num = num /10;          //让num不断的除10
                        count ++;               //同时让计数器增加
                }
                return count;                        //循环结束,返回count
        }
}

    好,运行一下:


大功告成!    其实,每个案例都有很多种写法,不同的人可能有不同的思路,黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。有的同学进度比较快,自学了String类的相关知识,然后灵光一闪相出了另一种解法:      
[Java] 纯文本查看 复制代码
public class Test08_jiWeiShu {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数:");
                int num = sc.nextInt();
                int count = method(num);
                System.out.println(num+"是一个"+count+"位数。");
        }
        public static int method(int num){
                String s = ""+num;                //把数字拼接成字符串
                int count = s.length(); //调用方法获得字符串的长度
                return count;                        //循环结束,返回count
        }
}

         我只能说,小伙子你太有才了!!~双击666
  


5 个回复

倒序浏览
打破零回复
回复 使用道具 举报
import java.util.Scanner;


public class Demo1 {
    static int x=1;
        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                System.out.println("请输入一段数字");
         Scanner sc =new Scanner(System.in);
         int num=sc.nextInt();
        int x=shuzi(num);
        
        System.out.println("数字是"+x+"位数");
        }
        public static int shuzi(int num){
       
                if(num/10>0){
                        num=num/10;
                        x++;
                        shuzi(num);
                                        }
                return x;
                       
        }
回复 使用道具 举报
为什么我第一反应是不断调用自己~~~
回复 使用道具 举报
import java.util.Scanner;


public class Demo1 {
    static int x=1;
        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                System.out.println("请输入一段数字");
         Scanner sc =new Scanner(System.in);
         int num=sc.nextInt();
        int x=shuzi(num);
        
        System.out.println("数字是"+x+"位数");
        }
        public static int shuzi(int num){
       
                if(num/10>0){
                        num=num/10;
                        x++;
                        shuzi(num);
                                        }
                return x;
                       
        }
回复 使用道具 举报
public class case01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个整数");
        String num = scanner.nextLine();
        int method = method(num);
        System.out.println("您输入的这个数包含的个数为"+method);
    }

    private static int method(String num) {
        return num.length();
    }
}
打破int的上限   整数可能很大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马