2013-03-16 4 views
0

Целью программы является вычисление объема, площади поверхности, площади или окружности с учетом пользовательского ввода. Я все еще пытаюсь понять, как я мог бы зациклиться на некоторых вещах, но вот моя настоящая проблема:Ошибка в пользовательском методе «... должен возвращать результат типа double»

Я пытаюсь запустить программу, но я получаю приведенную выше ошибку, также с операторами возврата, где я бы разместил которое сообщает пользователю окончательную информацию, которую он хочет знать (вещи, которые программа рассчитывала).

Ответ на мою главную проблему «... должен вернуть результат типа 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

Что будет ли возвращен ваш 'circumference()' metohd, если аргумент 'volume' отрицательный? ;) – jlordo

+0

Очевидно, что разработчики компилятора явно не платят очень ясные сообщения об ошибках! То, что точно можно было бы неправильно понять в «окружности(), должно возвращать двойное значение»? – Ingo

ответ

0

Ваш метод должен всегда возвращать двойной. Попробуйте что-то вроде этого:

... 

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"); 

EDIT:

и если цикл не вводится вообще, чем также метод должен возвращать -1

+0

это само по себе не исправит. Петля можно пропустить полностью. – jlordo

+0

вправо, не читал весь код, было утомительно :) если цикл не был введен, все равно должен возвращать -1. Я исправил свой ответ. спасибо –

+0

по-прежнему получают ту же ошибку. – user2133068

Смежные вопросы