2016-04-07 8 views
0

は、私は3つの数の平均を取る簡単なプログラムを作成しようとしていますが、私はエラー(Beginner Java):コンストラクタに引数がありませんか?

「クラス平均でコンストラクタ平均は与えられたタイプに適用することができないと言うことわざ得る;必要 :見つかりませ引数 を:int型、int型、int型 "ここ

は私のコードです:

public class ave { 
public static void main(String args[]) { 
average object = new average(3,4,6); 
} 
} 

とここに私のコンストラクタコード

public class average { 
public double takeaverage(double first, double second, double third) { 
double ave = (first + second + third)/3; 
System.out.println(ave); 
return ave; } 
} 
です
+1

'object.takeaverage(3,4,6);'それは方法だ –

+1

ThisIsAReallyLongNameForAClassThatAveragesThreeNumbers、すなわち平均、AverageClass(あなたはクラス名のためにパスカル・ケースを使用していることを確認してください) – Zulfe

答えて

0

コンストラクターの名前は、クラス名と同じで、戻り値の型がありません。 次のことを試してみてください。

public class ave { 
public static void main(String args[]) { 
Average object = new Average(3,4,6); 
} 
} 


public class Average { 
    public Average(double first, double second, double third){ 
     double ave = (first + second + third)/3; 
     System.out.println(ave); 
    } 
} 

、あなたはクラスAverageのコードを変更したくない場合は、単に以下のように、そのクラスからメソッドを呼び出します。

public class ave { 
public static void main(String args[]) { 
Average object = new Average(); 
double Avg = object.takeaverage(3,4,6); 
} 
} 


public class Average { 
public double takeaverage(double first, double second, double third) { 
double ave = (first + second + third)/3; 
System.out.println(ave); 
return ave; } 
} 
+0

ありがとうございます! –

0

コンストラクタを持っている必要がありますクラスと同じ名前。あなたが作成する必要が

public average(double a, double b, double c) 

は実際にクラス内の既存の唯一のコンストラクタが自動的に作成された引数なしのコンストラクタです。

0

これらの引数(3、4、6)を受け取るコンストラクタメソッドは定義していません。 次のようなコンストラクタメソッドを作成する必要があります。

public class average { 
public double result 

public average(int a, int b, int c){ 
this.result=this.takeaverage(double(a),double(b),double(c)) 
} 
public double takeaverage(double first, double second, double third) { 
double ave = (first + second + third)/3; 
System.out.println(ave); 
return ave; } 
} 
0

あなただけの3つの数字の平均を取るしたい場合は、平均的なオブジェクトを作成せずにそれを行うことができます。私はそれを下に示しました:

import java.util.*; 
public class Ave { 
    public static void main(String[] args){ 
     double number1, number2, number3; 
     Scanner console = new Scanner(System.in); 
     System.out.println("Enter number 1:"); 
     number1 = console.nextDouble(); 
     System.out.println("Enter number 2:");  
     number2 = console.nextDouble(); 
     System.out.println("Enter number 3:"); 
     number3 = console.nextDouble(); 
     double average = (number1 + number2 + number3)/3; 
     System.out.println("The average is: " + average); 
    } 
} 

上記のプログラムは、3つの数字を求めて平均を出力します。それはまだ少し冗長であることに注意してください。あなたも、以下に示すように、任意の数の平均を求めるためにそれを変更することができます、あなたがどこダブルス番号1、あまりにもユーザーを求めることなく3つの数字の平均を取るようにプログラムを変更することができます

import java.util.*; 
public class Ave { 
    public static void main(String[] args){ 
     int howMany; 
     double sum = 0.0; 
     double number, average; 
     Scanner console = new Scanner(System.in); 
     System.out.println("How many numbers do you want to take average of:"); 
     howMany = console.nextInt(); 
     int count = 1; 
     while(count <= howMany){ 
      System.out.println("Enter number " + count); 
      number = console.nextDouble(); 
      sum += number; 
      count++; 
     } 
     average = sum/howMany; 
     System.out.println("The average is: " + average); 
    } 
} 

数値2、およびnumber3には数値が与えられます(ハードコードされていますが、これは一般的には良い方法ではありません)。

0

"takeaverage"メソッドを作成しましたが、呼び出されていません。そして、おそらくあなたはセッターを使うか、コンストラクターを使って3つの数値を渡して初期化し、次にdouble値の "takeaverage"メソッドを呼び出し、そのダブル変数に割り当てられた平均値を得るべきです。

デフォルトのコンストラクタを使用し、「平均」クラスからオブジェクトを作成する必要があります。以下は、非常にシンプルなソリューションです:

public class average { 
    public double takeaverage(double first, double second, double third) { 
     double ave = (first + second + third)/3; 
     System.out.println(ave); 
     return ave; 
    } 
} 




//main class 
    public class ave{ 
     public static void main(String []args){ 
      average object = new average(); 
      object.takeaverage(3,4,6); 
     } 

    } 
関連する問題