可能是LONG 和INT的匹配有问题

解决方案 »

  1.   

    //: Jexample2.java
    import java.io.*;
    import javax.swing.*;public class Jexample2{
    public static void main(String[] args){
    System.out.println("Enter a letter:");
    int n;
            String input=JOptionPane.showInputDialog("请输入n的值");
                    n=Integer.parseInt(input);
    System.out.println("The number is:"+step(n));
    }
    static long step(int n){
    int a=n;
    if(a==1)
    return a;
    else {
    long sum=11;
    sum=a*step(a-1);
    return sum;}
    }
    }
      

  2.   

    public static void main(String[] args)

     System.out.println("Enter a letter:");
     String s =" ";
     int n;
     try
     {
      BufferedReader in = new BufferedReader( new InputStreamReader( System.in) );
      s = in.readLine();
      }catch(IOException e) {}
      n = Integer.parseInt(s.substring(0,b));//b为你要读入的数据的长度
    }
      

  3.   

    你现在的问题是输入的数字变成了asc 码对应的值.
    你可以用下面的方法将它转化成输入的10进制.//: Jexample2.java
    import java.io.*;
    public class Jexample2{
    public static void main(String[] args){
    System.out.println("Enter a letter:");
    int n=4;

            String str;
            BufferedReader buf;
            
            
    try{
    //n=(int)System.in.read();
    buf=new BufferedReader(new InputStreamReader(System.in));

    str = buf.readLine();

    n = Integer.parseInt(str);
    }catch(IOException e){}; 
    System.out.println("The number is:"+step(n));
    }
    static long step(int n){
    int a=n;
    if(a==1)
    return a;
    else {
    long sum=11;
    sum=a*step(a-1);
    return sum;}
    }
    }
    运行后输出结果如下Enter a letter:
    3
    The number is:6