2016-07-31 33 views
0

更新:我試着改變getCalcMean()和calcMean()方法的返回類型以使其更加準確, Person類可以正常工作,但是在程序類中它現在說「不兼容類型:可能有損於從double到int的有損轉換」。在System.out.println(math1.calcMean(math1.getCalcMean()));我明白錯誤意味着什麼,但我不知道如何解決它,因爲最終結果需要翻倍,我認爲java可以計算double和int並獲得double。我究竟做錯了什麼? < < >><爲什麼我的平均增加不超過零?>轉換爲雙倍


我試圖計算999鍵入後總的平均數,但它一直顯示0,我不明白爲什麼。

有人能告訴我如何讓我的getCalcMean()方法顯示的平均值爲numTotal/count?

---類節目---

public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 
    int num = 0; 
    int count = 1; 
    Math math1 = new Math(num, count); 
    while (num != 999) { 
     num = kb.nextInt(); 
     if (num != 999) { 
      math1.adder(num); 
      count ++; 
      System.out.println("Total till now:" + math1.getNumTotal()); 
     } 
    } 
    math1.setCount(count); 
    System.out.println(math1.getNumTotal()); 
    System.out.println(math1.calcMean(math1.getCalcMean())); 
    //System.out.println(math1.getNum()); 
    kb.close(); 
    /*Scanner kb = new Scanner(System.in); 
    String input = kb.nextLine(); 
    Scanner scn = new Scanner(input); 
    int num = scn.nextInt(); 
    Math math1 = new Math(num,0); 
    while(num != 999){ 
     math1.adder(num); 
     input = kb.nextLine(); 
    } 

    System.out.println(math1.getNumTotal());*/ 
} //main 

} 

----類數學----

public class Math { 

private int num; 
private int numTotal; 
private double mean; 
private int count; 

/*public Math(int num, int numTotal){ 
this.num = num; 
}*/ 

public Math(int num, int count) { 
    this.num = num; 
    this.count = count; 
} 

//get// 
public int getNum(){ 
    return this.num; 
} 

public int getNumTotal(){ 
    return this.numTotal; 
} 

public double getCalcMean(){ 
    return this.mean; 
} 

//set// 

public void setNumTotal(int value){ 
    this.numTotal = value; 
} 

public void setNum(int value){ 
    this.num = value; 
} 

public void setCalcMean(double value){ 
    this.mean = value; 
} 

public void setCount(int value){ 
    this.count = value; 
} 
//other 
/*public void adder(int num){ 
numTotal = numTotal + num; 
}*/ 

public void adder(int num) { 
    this.num = num; 
    numTotal = numTotal + this.num; 
} 
//added after// 
public double calcMean(int num){ 
    this.numTotal = numTotal; 
    mean = numTotal/this.count; 
    return mean; 
} 

} 
+1

你永遠不會調用任何修改「mean」的方法。此外,'main'方法中的'counter'與'Math'類中的'count'不同。 – resueman

回答

1
  1. counter ++在你的代碼是沒有意義的,因爲你永遠不會把它傳遞給數學對象。
  2. math1.getCalcMean()將返回Math對象中的mean,但mean尚未計算。

建議:

  1. 添加getter和setter方法在數學課上櫃臺。
  2. 計算getCalcMean()方法中的mean

Plese請參閱下面的代碼。我假設你使用999作爲結束標誌,所以沒有考慮到它。計數器初始化爲0.

import java.util.Scanner; 

public class Program { 
public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 
    int num = 0; 
    int counter = 0; 
    Math math1 = new Math(num, counter); 
    while (num != 999) { 
     num = kb.nextInt(); 
     if (num != 999) { 
      math1.adder(num); 
      counter ++; 
      math1.setCounter(counter); 
      System.out.println("Total till now:" + math1.getNumTotal()); 
     } 
    } 
    System.out.println(math1.getNumTotal()); 
    System.out.println(math1.getCalcMean()); 
    //System.out.println(math1.getNum()); 
    kb.close(); 
    /*Scanner kb = new Scanner(System.in); 
    String input = kb.nextLine(); 
    Scanner scn = new Scanner(input); 
    int num = scn.nextInt(); 
    Math math1 = new Math(num,0); 
    while(num != 999){ 
     math1.adder(num); 
     input = kb.nextLine(); 
    } 

    System.out.println(math1.getNumTotal());*/ 
} //main 
} 

而且還是數學類。

public class Math { 

private int num; 
private int numTotal; 
private int mean; 
private int counter; 

/*public Math(int num, int numTotal){ 
this.num = num; 
}*/ 

public Math(int num, int counter) { 
    this.num = num; 
    this.counter = counter; 
} 

//get// 
public int getNum(){ 
    return this.num; 
} 

public int getNumTotal(){ 
    return this.numTotal; 
} 

public int getCalcMean(){ 
    mean = numTotal/this.counter; 
    return mean; 
} 

public int getCounter(){ 
    return this.counter; 
} 

//set// 

public void setNumTotal(int value){ 
    this.numTotal = value; 
} 

public void setNum(int value){ 
    this.num = value; 
} 

public void setCalcMean(int value){ 
    this.mean = value; 
} 

public void setCounter(int counter){ 
    this.counter = counter; 
} 

//other 
/*public void adder(int num){ 
numTotal = numTotal + num; 
}*/ 

public void adder(int num) { 
    this.num = num; 
    numTotal = numTotal + this.num; 
} 
//added after// 
public void calcMean(int num){ 
    mean = numTotal/this.counter; 
} 
} 
+0

謝謝,我根據其他評論做了這個,做了一些偵探工作,我意識到我需要{get;設置;} //請原諒C# –

相關問題