package P20_2;
import java.util.*;class F
{
int fun(int n)
{
Scanner in = new Scanner(System.in);

n = in.nextInt();

while((char)n != '#')
{
break;
}

return (n * fun(n));
}
}public class p20_2 
{
public static void main(String[] args) 
{
int n;
F f = new F();
Scanner in = new Scanner(System.in);

System.out.println("这个程序可以多次把数相乘");
System.out.println("输入一个整数后按回车键,可继续输入要乘的数,以#结束计算");
n = in.nextInt();
System.out.println("结果为:" +f.fun(n));
}
}请帮忙一下,谢谢了

解决方案 »

  1.   

    这个#貌似不能转化为nextInt类型,而且你这个递归函数明显有问题。。
      

  2.   


    你这样实现吧!!!就行了,简单,明了
    import java.util.*;
    public class F
    {
    public static void main(String[] args) 
    {System.out.println("Enter a integer:");
    Scanner in = new Scanner(System.in); //输入一个数;
    int n =in.nextInt();
    System.out.println("Factorial of"+ n +"is"+factorial(n)); //调用方法输出
    }
    public static long factorial(int n)  //递归实现求阶乘
    {
    if(n==0)
    return 1;
    else
    return n*factorial(n-1);
    }}
      

  3.   

    按你的思路这样也可以实现:
    import java.util.*; class F
    {public static long factorial(int n)  //递归实现求阶乘
    {
    if(n==0)
    return 1;
    else
    return n*factorial(n-1);
    }
    }
    public class p20_2
    {
    public static void main(String[] args) 
    {
    System.out.println("Enter a integer:");
    Scanner in = new Scanner(System.in); //输入一个数;
    int n =in.nextInt();
    long m=new F().factorial(n);//调用方法输出
    System.out.println("Factorial of"+ n +"is"+m); 
    }
    }
      

  4.   


    哦,不好意思,这个问题发的比较匆忙,所以没写我的纠结所在,我用eclipse编译运行的,能运行,输入数字的时候能“回车数字回车数字的下去.....”但是,但是到#回车后就不再继续运行了,我也觉得我的递归函数有些别扭,但不知道怎么改请指教,就是输入连续输入多个整数,然后连乘。
      

  5.   

    这样怎么样?
    import java.util.*;class F {
    int fun(int n) {
    Scanner in = new Scanner(System.in);
    if(in.hasNextInt()) {
    int m = in.nextInt();
    return fun(n * m);
    } else {
    return n;
    }
    } public static void main(String[] args) {
    int n;
    F f = new F();
    Scanner in = new Scanner(System.in); System.out.println("这个程序可以多次把数相乘");
    System.out.println("输入一个整数后按回车键,可继续输入要乘的数,以#结束计算");
    n = in.nextInt();
    System.out.println("结果为:" + f.fun(n));
    }
    }