Используйте математический класс для расчета - PullRequest
0 голосов
/ 20 марта 2010

Напишите программу JAVA, которая вычисляет площадь поверхности цилиндра, C = 2 (π r2) + 2 π r h, где r - радиус, а h - высота цилиндра. Разрешить пользователю вводить в радиусе и высоте. Отформатируйте вывод до трех знаков после запятой. Используйте константу PI и метод pow () из класса Math.

Это то, что я сделал до сих пор, но он не может работать. Кто-нибудь может мне помочь?

import Java.util.Scanner;

public class Ex5 {

    public static void main (String[] args)
    {
      Scanner input=new Scanner(System.in);
      double radius,height,area;
      System.out.print("Please enter the radius of the Cylinder");
      radius = input.nextDouble();
      System.out.print("Please enter the height of the Cylinder");
      height = input.nextDouble();
      area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);
      System.out.println("The surface of the cylinder" + area);  
    }
}

Ответы [ 5 ]

3 голосов
/ 20 марта 2010

Если это дословно исходный код, то здесь довольно много проблем.

Первый, строка:

2*Math.PIMath.POW

Вы забыли поставить звездочку между PI и Math, поэтому компилятор видит PIMath как символ. Было бы неплохо поставить скобки, чтобы увидеть это:

2*(Math.PI)*(Math.pow(radius, 2))

Обратите внимание, что Math.PI является статической константой. Math.pow, с другой стороны, является методом.

Все идентификаторы в Java чувствительны к регистру. Math.pow существует, Math.POW нет.

Кроме того, я заметил, что вы вообще не используете переменную высоты, поэтому ваш расчет по формуле неверен.

2 голосов
/ 20 марта 2010

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

area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);

Обратите внимание на раздел

*Math.PIMath

вам нужно иметь * между PI и Math.

Также для дальнейшего использования, знаете ли вы, что можете добавить эту строку в начало вашего кода:

import static java.lang.Math.*;

После этого вы можете изменить эту строку на:

area = (4*PI*radius)+2*PI*POW(radius,2);

Опять же, некоторым людям это может не понравиться. Но я думаю, что более приятный код позволяет напрямую импортировать несколько таких строк.

1 голос
/ 20 марта 2010

Вы можете избавить себя от необходимости использовать Math.pow(), подставив radius * radius. Еще лучше, коэффициент 2πr выходит за пределы формулы для площади цилиндра . Например, A = 2πr 2 + 2πrh = 2πr (r + h) .

double area = 2 * Math.PI * radius * (radius + height);
1 голос
/ 20 марта 2010

По личному вкусу я склоняюсь к добавлению скобок в соответствующие высказывания. Это делает код более читабельным и может помочь с отладкой позже.

Я считаю, что ошибка в строке:

area = (4*Math.PI*radius)+2*Math.PIMath.POW(radius,2);

Я бы изменил это на:

area = (2 * Math.PI * Math.pow(radius, 2)) + (2 * Math.PI * radius * height);

В оригинале есть опечатка: Java чувствительна к регистру, и поэтому Math.POW () программно отличается от Math.pow (). Кроме того, вы не можете умножать путем объединения команд; скорее вы должны поставить звездочку между ними.

Это должно заставить его скомпилироваться.

0 голосов
/ 01 октября 2015

Скорее всего, проблема в части кода, где вычисляется область. Программирование очень буквально, поэтому, когда между Math.PI и Math.POW нет пробела (radius, 2), это вызывает ошибку. Человеческому глазу они кажутся двумя разными выражениями, но компилятор читает их как одно, так как иначе не было сказано. Простое добавление * между Math.PI и Math.POW (радиус, 2) должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...