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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦想的小草 中级黑马   /  2016-9-2 22:21  /  1153 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设计一个方法,传入用户输入的一个小于10的正整数,如果传入的整数不符合要求则返回-1,
将传入的整数的阶乘返回给调用者,并在控制台输出(若返回-1则输出“对不起无法进行运算”)
        比如:
            用户输入5 那么调用该方法后 返回的是120,则在控制台输出120(5!=5*4*3*2*1的值)
              用户输入12则返回-1,则在控制台输出“对不起无法进行运算”

4 个回复

倒序浏览
能用大整数解决这个问题吗
回复 使用道具 举报
wo1026756529 发表于 2016-9-2 23:44
能用大整数解决这个问题吗

你所说的大整数是指什么?
回复 使用道具 举报
梦想的小草 发表于 2016-9-3 21:34
你所说的大整数是指什么?

超过基本类型的范围啊,用数组什么的来存一个很大的数 啊
回复 使用道具 举报
可以使用递归来做,比如  
package com.heima.practise;

import java.util.Scanner;

public class Test00 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);                        //创建一个键盘录入对象
                System.out.println("请输入一个整数(1-11之间):");                //提示用户输入一个整数并且范围为1-11之间
                int num = sc.nextInt();                                                        //将这个整数存储到num变量中
               
                int count = fun(num);                                                        //调用fun()方法获取阶乘后的数据
                System.out.println(count);                                                //将数据答应到控制台上
        }
       
        //定一个方法获取阶乘后的结果
        public static int fun(int num){
                if (num >= 12) {                                                                //确定输入数值的范围
                        System.out.println("对不起无法进行运算");
                        return -1;
                }else if (num == 1) {                                                        //定义递归的出口
                        return 1;
                }else {
                        return num * fun(num - 1);                                        //使用递归求阶乘
                }
        }
}


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