为什么我这样不行,助教助教~~~~~~~~~~~~~~~~~~~~~

为什么我这样不行,助教助教~~~~~~~~~~~~~~~~~~~~~

public class FacDemo {
//带参有返回值
 public static void main(String[] args) {
  //创建对象
  FacDemo f=new FacDemo();
  System.out.println("你输入一个数:");
  Scanner a=new Scanner(System.in);
  int sum=0;
  for(int i=1;i<=a.nextInt();i++){
   sum=sum+f.fac(i);
  }
  System.out.println(a.nextInt()+"的阶乘为:"+sum);
 }
 
 //创建一个方法
 public int fac(int n){
  int s=1;
  for(int i=1;i<=n;i++){
   s=s*i;
  }
  return s;
 }

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
乱世玉米 2017-07-23 11:40:12

你是着把fac方法方人main方法里试试就知道到底是不是你想要的结果,假设n=5,然后for循环五次后s=5,然后才执行return

  • 提问者 Ghostless #1
    fac方法能放入主方法里面继续调用?方法能写进主方法里面?
    2017-07-23 13:15:58
  • 乱世玉米 回复 提问者 Ghostless #2
    int n=5; for(int i=1;i<=n;i++){ s=s*i; } System.out.println(s);
    2017-07-23 13:19:34
乱世玉米 2017-07-23 11:31:05

不好意思我看错了 ,你i是n

在for循环里调用另一个for循环,为什么不用两个for循环呢,然后把两个for循环放在main方法里就好了

也不用new对象了


  • 提问者 Ghostless #1
    现在是要求用 方法来做这个阶乘。不是要用双重循环做
    2017-07-23 13:10:36
  • 提问者 Ghostless #2
    n只是一个数值,f.fac(i)是阶乘的值,怎么可能替换,我不知道你是看不懂,还是新手
    2017-07-23 14:31:43
  • 乱世玉米 回复 提问者 Ghostless #3
    嗯 知道了
    2017-07-23 14:43:28
乱世玉米 2017-07-22 23:30:25

先用一个变量接收ss=a.nextInt();因为for()中间的语句是boolean型的,程序执行到那就要判断了。还有输出语句里的那个a.nextInt();也改了吧,系统都不知道要输出啥

最后一个fac方法没啥意义,你的S一直是1,所以你i的值是多少就return啥,那还不如把f.fac(i)改成i就行了 


int aa=a.nextInt();一定要个东西接收,不能直接用


  • 提问者 Ghostless #1
    我的S 怎么可能一直是1,int s =1 初始值 在for循环外面,for循环S等于是重新附值
    2017-07-23 11:13:42
  • 提问者 Ghostless #2
    还有就是f.fac(i)代表的是阶乘,i 代表的是什么,怎么可能替换
    2017-07-23 11:18:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师