2016-09-20 50 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を使い始めたばかりなので、EclipseなどのIDEをチェックアウトすることをお勧めします。これは、コンパイル時のエラーをすばやく見つけて修正するのに役立ちます。

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));  
    } 
    } 
関連する問題