我已经导入util.*,但还是编译结果是无法找到其中的Scannerl类,这是什么原因造成的呢

来源:百度知道 编辑:UC知道 时间:2024/09/27 06:18:48
具体程序在这里:
import java.util.*;
import java.io.*;
public class Factorial {

public static void main(String[] args) {
Scanner a=new Scanner(System.in);
System.out.print("Input an integer n(n>0):");
int n=a.nextInt();
System.out.println(n+"!="+Factorial(n));
}

public long Factorial(int n){
if(n==0) return 1;
if(n>=0) return n*Factorial(n-1);
}

}

b你这个程序有几个问题
(1).在静态方法(main)里面调用成员方法,解决办法要么用static修饰public long Factorial(int n)这个方法,要么实例化一个Factorial 对象,然后调用成员方法.
(2).在方法public long Factorial(int n)中,有返回值的情况下并没在所有的路径上设置return.意思就是n==0和n>=0的情况你设置了返回值,但是在n<0的情况下你没有返回值,所以是错误的.

关于你说的scanner是没有问题的.我可以编译通过

最后,使用Scanner类可以不导入 java.io.*; 这个包

import java.util.*;
import java.io.*;
public class Factorial {

public static void main(String[] args) {
Scanner a=new Scanner(System.in);
System.out.print("Input an integer n(n>0):");
int n=a.nextInt();
System.out.println(n+"!="+Factorial(n));
}

public static long Factorial(int n){//加上static
if(n==0) return 1;
if(n>=0) return n*Factorial(n-1);
}

}
再有Scanner只有在jdk1.5以上的版本中才有的,如果你使用的是jdk1.4当然找不到了

Factorial 需要静态方法才能直接调用

jdk版本问题,至少需要1.5以上

这个程序没有问题呀