2016-09-20 58 views
0

我是新来的Java,我经常得到这个错误。 以下是错误:编译器错误:方法不能应用于类型(因子程序)

Factorial.java:17:错误:类Factorial中的方法factorialLoop不能应用于给定的类型;

factorialLoop();

^

要求:INT

发现:没有参数

原因:实际的和正式的参数列表的长度不同****

这里是我的代码:

import java.util.*; 
public class Factorial 
{ 
    public static void main(String [] args) 
    { 
     int factVariable; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter an integer to calculate its factorial."); 
     factVariable = sc.nextInt(); 
     int fact = factorialLoop(factVariable); 
     if(factVariable < 0) 
     { 
      System.out.println("Invalid Number, must be non-negative."); 
     } 
     else 
     { 
      factorialLoop(); 
     } 
     System.out.println("Factorial of " + factVariable + "is = " + fact); 
    } 
    public static int factorialLoop(int factVariable) 
    { 
     int fact = 1; 
     for(int i = 1; i <= factVariable; i++) 
     { 
      fact = fact * i; 
     } 
    } 
} 

该程序的目的是计算因子和th是最后一个错误即时通讯阻止我编译。谢谢您的帮助。

回答

0

在Java中,您需要定义一个具有给定参数集的方法,以便用这些参数调用它。 factorialLoop();不是您定义的方法。在java中,可以有多个具有相同名称的方法,但具有不同的参数。这是一个称为重载的主体。尽管如此,这些方法需要单独定义。因此,您需要定义一个factorialLoop();方法,否则您需要将该代码更改为factorialLoop();之类的代码。解决此问题后,您还将在factorialLoop方法中遇到错误,因为您需要添加return语句(因为该方法指定它需要返回值)。

由于您刚开始使用Java,因此我建议您查看一个IDE,如Eclipse,因为它可以帮助您快速找到并修复编译时错误。

0

1)首先没有方法实现名为factorialLoop(),没有参数。

2)该方法的返回类型也不正确。

3)请在下面尝试,这可能会有所帮助。我已经使用递归并删除了第一次调用函数factorialLoop();

import java.util.*; 
public class Factorial 
    { 
    public static void main(String [] args) 
    { 
     int factVariable; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter an integer to calculate its factorial."); 
     factVariable = sc.nextInt(); 


     if(factVariable < 0) 
     { 
     System.out.println("Invalid Number, must be non-negative."); 
     } 
     else 
     { 
     System.out.println("Factorial of " + factVariable + " is = " 
     + factorialLoop(factVariable)); 
     } 

    } 
    public static int factorialLoop(int n) 
    { 
     if (n == 1)  
      return 1;  
     else  
      return(n * factorialLoop(n-1));  
    } 
    } 
相关问题