Переменная рассчитывается и возвращается в пользовательском методе не найден? - PullRequest
0 голосов
/ 23 октября 2018

Это мой код прямо сейчас:

import java.util.Scanner; 
import java.util.*;
import java.io.File; 
import java.io.PrintWriter; 
import java.io.FileNotFoundException; 
import java.io.IOException;

public class IceCreamData 
{
    // method to calculation volume
    public static void printCylinderVolume(double cylinderRadius, double cylinderHeight){ 
        double cylinderVolume = Math.PI * Math.pow(cylinderRadius, 2) * cylinderHeight; 
        return cylinderVolume;
    }


    // method to calculate number of ice cream scoops
    public static double printNumScoops(double cylinderVolume){ 
        double numScoops = (cylinderVolume * 0.004329) * 30; 
        System.out.println("The number of scoops is " + cylinderVolume);
    }

// the main method
public static double main(String[] args) throws FileNotFoundException, IOException 
    {

 //input the file and scanner and output file 
    File input = new File("project4Data.txt");
    Scanner in = new Scanner(input); 
    PrintWriter out = new PrintWriter("scoopResults.txt");

//declaring variables outside of while-loop in order to run 
    String iceName; // name of the ice cream
    double cylinderRadius; // cylider radius
    double cylinderHeight; // cylinder height
    int expirationYear; // expiration year

// while-loop to determine number of scoops in a container of ice cream
        while(in.hasNext())
        { 
            iceName = in.next(); // ice cream name 
            cylinderRadius = in.nextDouble(); // radius of the cylinder
            cylinderHeight = in.nextDouble(); // height of the cylinder
            //while-loop 
            while(cylinderRadius > 0 && cylinderHeight > 0 && expirationYear <= 2018){
                System.out.println(iceName); 
                printCylinderVolume(cylinderRadius, cylinderHeight);
                printNumScoops(cylinderVolume);
            }




        }
    }
}

Я пытаюсь вернуть объем цилиндра из метода printCylinderVolume в основной метод, чтобы я мог использовать его в методе printNumScoops.Прямо сейчас я получаю сообщение об ошибке, говорящее о том, что cylillVolume является неожиданным возвращаемым значением, и еще одно сообщение об ошибке, говорящее о том, что метод printNumScoops не может найти цилиндр.ЦилиндрVolume инициализируется / объявляется в нужных местах, и нужно ли его возвращать / хранить в методе main по-другому для работы?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

У вас неправильный способ создания метода.Например, в следующем методе:

public static void printCylinderVolume(double cylinderRadius, double cylinderHeight){ 
    //         ^
   // the method need void return 


   double cylinderVolume = Math.PI * Math.pow(cylinderRadius, 2) * cylinderHeight; 


   return cylinderVolume;
   // But, you're returning double
}

Вы создаете метод с возвращением void.но в конце метода вы возвращаете double.

И в следующем коде:

// the main method
public static double main(String[] args) throws FileNotFoundException, IOException {

   ...
}

Если вы пытаетесь создать метод main, то приведенный выше кодневерен.Метод main должен возвращать пустоту, подобную этой:

public static void main(String[] args) {
  ...
}

Подробнее об определении метода читайте в https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

0 голосов
/ 23 октября 2018

Ваш метод должен возвращать double, а не void:

public static double printCylinderVolume(double cylinderRadius, double cylinderHeight) {
    // Here --^ 
    double cylinderVolume = Math.PI * Math.pow(cylinderRadius, 2) * cylinderHeight; 
    return cylinderVolume;
}

Возможно, вы захотите рассмотреть переименование метода, хотя, поскольку он на самом деле ничего не печатает, он просто возвращаетрасчет.calcCylinerVolume может быть более подходящим именем.

...