2013-03-16 101 views
0

程序的目標是計算給定用戶輸入的體積,表面積,面積或周長。我仍然試圖找出我將如何循環某些事情,但這裏是我真正的問題:自定義方法「...必須返回雙倍結果」的錯誤

我嘗試和運行程序,但我得到上面顯示的錯誤,也與返回語句在哪裏我會放置一個結束消息告訴用戶他希望知道的最終信息(程序計算的東西)。

回答我的主要問題「......必須返回一個double類型的結果」將不勝感激,向我這裏所說的還要走很長的路要走其他事情的任何幫助。

此外,正確格式化的代碼的事情是非常討厭的,我不知道是什麼意思,告訴我以4空格隔開,每當我做它,它的工作,有人總是編輯它,這是非常計數器,直觀。

import java.io.*; 
public class circlemethods 
{ 
    public static void main (String [] args) throws IOException 
    { 
     BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in)); 
     String numInput; 
     String reqInput; 
     int num; 
     int numInt = 0; 
     System.out.println("This program will ask for a given user radius, then proceed to calculate the req"); 
     System.out.println("The program will use several methods to achieve this, all calling back to the main method"); 
     System.out.println("Press any key to continue"); 
     numInput = myInput.readLine(); 
     System.out.println("First, what would you like to calculate?"); 
     System.out.println("Enter '1' for Circumference, '2' for area, '3' for volume, or '4' for surface area"); 
     reqInput = myInput.readLine(); 
     numInt = Integer.parseInt (reqInput); 
     System.out.println("Now enter the radius of the required shape"); 
     numInput = myInput.readLine(); 
     num = Integer.parseInt (numInput); 
    } 
    public static double circumference(double volume, double surfacearea, double area, double radius) throws IOException { 
     int numInt = 0; 
     int num = 0; 
     double circumference; 
     for (int i = 0; i < volume ; i++) { 
     if (numInt == 1) 
     { 
      System.out.println("You chose to calculate circumference, given the radius :"+ num); 
      circumference = (3.14) * (2) * (num); 
      return circumference; 
     } 
     if (numInt == 2) 
     { 
      System.out.println("You chose to calculate area, given the radius:" + num); 
      area = (3.14)*(num)*(num); 
      return area; 
     } 
     if (numInt == 3) 
     { 
      System.out.println("You chose to calculate volume, given the radius:" + num); 
      volume = 4/3 * (3.14)*(num)*(3)*(3)*(3); 
      return volume; 
     }  
     if (numInt == 4) 
     { 
      System.out.println("You chose to calculate surface area, given the radius:" + num); 
      surfacearea = 4*(3.14)*(num)*(2)*(2); 
      return surfacearea; 
     } 
     else 
     { 
      System.out.println("Invalid entry, please restart the program"); 
     } 
     } 
    } 
    } 
+1

什麼如果參數'volume'爲負值,你的'circumference()'metohd會返回嗎? ;) – jlordo 2013-03-16 20:04:11

+0

它顯然不能爲編譯器編寫者提供非常明確的錯誤消息! 「周長()必須返回一個double值」究竟是什麼可能被誤解? – Ingo 2013-03-17 19:44:50

回答

0

你的方法應該總是返回一個double。 嘗試是這樣的:

... 

if (numInt == 4) 
{ 
    System.out.println("You chose to calculate surface area, given the radius:" + num); 
    surfacearea = 4*(3.14)*(num)*(2)*(2); 
    return surfacearea; 
} 

else 
{ 
    return -1; 
} 

其中對於結果的方法檢查的調用者, 如果是小於0,它知道它失敗了,不是打印:

System.out.println("Invalid entry, please restart the program"); 

編輯:

,如果循環沒有全部進入,也比該方法應該返回-1

+0

這本身不會解決它。循環可能會完全跳過。 – jlordo 2013-03-16 20:05:19

+0

沒錯,沒有讀全部代碼,很累人:)如果循環沒有輸入,仍然應該返回-1。我糾正了我的答案。謝謝 – 2013-03-16 20:06:29

+0

仍然會得到相同的錯誤。 – user2133068 2013-03-16 22:59:30

相關問題