2016-04-24 10 views
-2

私は3つの倍数の合計を計算し、その平均を取得するはずです。 私は以下の2つの方法を使用する必要があります。変更する必要はありません。 getNumbers()ユーザー入力、引数なし、戻りは取得されません。 getAverage()は、3つの倍数の平均を計算し、平均を返し、引数はありません。数値の平均を取得

私の質問は、私がCMDで実行するたびに、そのメソッドが動作せず、出力を印刷しないことを示しています。私が3つの数字を入力し、最後にその平均を取得するために。

私が間違っていることについて誰かが私に助言を与えることができれば、それは非常に感謝されます。

import java.util.Scanner; 
public class ComputeAverage{ 
    double firstNum; 
    double secondNum; 
    double thirdNum; 
    double sum; 
    double average; 

    public void getNumbers(){ 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter your first number: "); 
     double firstNum = keyboard.nextDouble(); 
     System.out.println("Enter your second number: "); 
     double secondNum = keyboard.nextDouble(); 
     System.out.println("Enter your third number: "); 
     double thirdNum = keyboard.nextDouble(); 
     Test.println("The average is: " + average); 
    } 
    public double getAverage(double firstNum, double secondNum, double thirdNum){ 
     double average = firstNum + secondNum + thirdNum/3; 
     return average; 

    } 
} 
+1

あなたは、演算子の優先順位を学ぶべきhttps://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html –

答えて

1

コードにはいくつかの問題があります。まず第一に、Testは未知であるため、コンパイルされません。 firstNumsecondNumおよびthirdNumもメンバー変数として宣言しましたが、getNumbers()のローカル変数として宣言されています。メンバー変数を使用するか、値を引数としてgetAverage()に渡すかを決める必要があります。

次に、/+よりも優先されるため、thirdNum/3が最初に計算されます。

/ 3.0と入力する方が良いと思いますが、3はできるだけ明確にするために、とにかく2倍に変換されます。それは、例えば次のようになります

import java.util.Scanner; 

public class ComputeAverage{ 
    double firstNum; 
    double secondNum; 
    double thirdNum; 

    public void getNumbers(){ 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter your first number: "); 
     firstNum = keyboard.nextDouble(); 
     System.out.println("Enter your second number: "); 
     secondNum = keyboard.nextDouble(); 
     System.out.println("Enter your third number: "); 
     thirdNum = keyboard.nextDouble(); 
    } 
    public double getAverage(){ 
     return (firstNum + secondNum + thirdNum)/3.0; 

    } 

    public static void main(String[] args) { 
     ComputeAverage ca = new ComputeAverage(); 
     ca.getNumbers(); 
     System.out.println("The average is: " + ca.getAverage()); 
    } 
} 
4

あなたがoperator precedence for Javaを学ぶ必要がありますが、これはmathsに適用されるBOMDASから来ています。

/オペレータは、あなたが持っているものを意味している+よりも優先順位が高い可能性が高いあなたが意図したもの

double average = firstNum + secondNum + (thirdNum/3); 

である。また、私はあなたにも、このメソッドを呼び出すために望んでいた疑いがある

double average = (firstNum + secondNum + thirdNum)/3; 

ました。

Test.println("The average is: " + getAverage(firstNum, secondNum, thirdNum); 

混乱を避けるために、すべてのフィールドをローカル変数に変更します。注:あなたのIDEはあなたにこれを行い、あなたに自動修正を与えるように示唆すべきです。

0

ここでは、プログラムのエントリポイントであるメインメソッドはありません。そして、あなたは、あなたがこのコードを作成するために検討する必要があり

import java.util.Scanner; 
    public class ComputeAverage{ 
     double firstNum; 
     double secondNum; 
     double thirdNum; 
     double sum; 
     double average; 

     public void getNumbers(){ 
      Scanner keyboard = new Scanner(System.in); 
      System.out.println("Enter your first number: "); 
      this.firstNum = keyboard.nextDouble(); 
      System.out.println("Enter your second number: "); 
      this.secondNum = keyboard.nextDouble(); 
      System.out.println("Enter your third number: "); 
      this.thirdNum = keyboard.nextDouble(); 

     } 
     public double getAverage(double firstNum, double secondNum, double thirdNum){ 
      double average = (firstNum + secondNum + thirdNum)/ 3; 
      return average; 

     } 

    public static void main (String [] arg){ 

    getNumbers(); 

    getAverage(firstNum, secondNum, thirdNum); 

     Test.println("The average is: " + average); 
    } 
    } 
+1

私はあなたがする必要があると思います演算子の優先順位と変数スコープについて学びます。 –

+1

または数学のBOMDAS。 ;) –

+1

@PeterLawrey、はい:-) –

0

3事がコールする

  1. 必要性を仕事にgetAverage()に表示されていないはgetNumber()内の3つのローカル変数を初期化していますSystem.out.println、または静的メソッドprintlnをクラスTestで定義します(投稿していないので、あなたは持っていないと思います)
  2. 平均値は自動的に値に更新されません。定義したメソッドを呼び出す必要があります。 。getAverage
  3. d要約getAverage

に演算子の優先順位を忘れONT、以下を行う必要があります。

System.out.println("The average is: " + getAverage(firstNum, econdNum, thirdNum)); 

と理由オペレータの持つ

Test.println("The average is: " + average); 

はこれを置き換えます優先順位:

public double getAverage(double firstNum, double secondNum, double thirdNum){ 
     double average = (firstNum + secondNum + thirdNum)/3; 
     return average; 

    } 
関連する問題