亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請教各位大神,最后輸出為何是零?

https://img1.sycdn.imooc.com//5be2911a000120e736361024.jpg

https://img1.sycdn.imooc.com//5be2911f0001bb1418520764.jpg

https://img1.sycdn.imooc.com//5be2912300016f1918440800.jpg

https://img1.sycdn.imooc.com//5be2912700019f5718780788.jpg

https://img1.sycdn.imooc.com//5be2912b000134b711240408.jpg

如圖。請教一下各位,為何最后輸入信息之后,輸出的值始終為零呢?

正在回答

4 回答

public?abstract?class?Shape?{
????public?double?C;
????public?double?S;
????public?abstract?void?Perimeter();
????public?abstract?void?Area();
}
public?class?Circle?extends?Shape{
????double?R;
????final?double?PI?=?3.14;
????Circle(double?RR){
????????this.R?=?RR;
????}
????public?void?Perimeter(){
????????C?=?2?*?PI?*?R;
????????System.out.println("圓形的周長為"?+?C);
????}
????public?void?Area(){
????????S?=?PI?*?R?*?R;
????????System.out.println("圓形的面積為"?+?S);
????}
}
public?class?Rectangle?extends?Shape{
????double?l;
????double?d;
????Rectangle(double?ll,?double?dd){
????????this.l?=?ll;
????????this.d?=?dd;
????}
????public?void?Perimeter(){
????????C?=?2?*?(l?+?d);
????????System.out.println("矩形的周長為"?+?C);
????}
????public?void?Area(){
????????S?=?l?*?d;
????????System.out.println("矩形的面積為"?+?S);
????}
}
import?java.util.Scanner;

public?class?Test?{
????public?static?void?main(String[]?args){
????????Scanner?input?=?new?Scanner(System.in);
????????System.out.println("請輸入矩形的長和寬");
????????double?l?=?input.nextDouble();
????????double?d?=?input.nextDouble();
????????Shape?sp1?=?new?Rectangle(l,?d);
????????sp1.Perimeter();
????????sp1.Area();
????????System.out.println("請輸入圓形的半徑");
????????double?r?=?input.nextDouble();
????????Shape?sp2?=?new?Circle(r);
????????sp2.Perimeter();
????????sp2.Area();
????}
}

請輸入矩形的長和寬

2

2

矩形的周長為8.0

矩形的面積為4.0

請輸入圓形的半徑

2

圓形的周長為12.56

圓形的面積為12.56


0 回復 有任何疑惑可以回復我~
#1

抒情卻輸情 提問者

請問一下,是因為我沒有寫帶參的構造方法,所以輸出才為零嗎?為什么普通成員方法沒有給變量賦上值呢?
2018-11-07 回復 有任何疑惑可以回復我~
#2

qq_慕姐9261892

Scanner input = new Scanner(System.in); System.out.println("請輸入矩形的長和寬"); double l = input.nextDouble(); double d = input.nextDouble(); Shape sp1 = new Rectangle(l, d); sp1.Perimeter(); sp1.Area();老哥你這短代碼什么意思
2019-03-26 回復 有任何疑惑可以回復我~
#3

俗人_心 回復 qq_慕姐9261892

接收用戶輸入的變量
2019-12-30 回復 有任何疑惑可以回復我~

你那個intial類里面的r是本類中的變量,因為沒有作為參數傳給方法,所以不參與方法的計算的。子類中的長和寬半徑都沒賦值,系統賦值0。

0 回復 有任何疑惑可以回復我~

就是因為你原來的代碼里面沒有地方沒有給賦值

0 回復 有任何疑惑可以回復我~

應該是里面的變量沒有給賦新值,用的就是默認的值0,這樣無論輸入什么數值,輸出都是0

0 回復 有任何疑惑可以回復我~
#1

抒情卻輸情 提問者

我就是納悶兒為什么沒有給變量賦上值。。。
2018-11-08 回復 有任何疑惑可以回復我~
#2

雀雀you 回復 抒情卻輸情 提問者

因為你沒有將控制臺得到的值傳遞給負責計算的方法
2018-11-19 回復 有任何疑惑可以回復我~
#3

雀雀you 回復 雀雀you

樓上大佬按照你的思路已經給你解決了問題,但是我覺得完全沒必要寫得這么麻煩。你直接寫一個帶參的方法不就行了嗎,既不需要使用到成員變量也不需要使用構造方法。
2018-11-19 回復 有任何疑惑可以回復我~
#4

抒情卻輸情 提問者 回復 雀雀you

懂了!謝謝
2018-11-21 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531144    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

請教各位大神,最后輸出為何是零?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號