Ошибка в System.out.println

Есть ли ошибка в следующем коде? Он показывает, что не может найти символ, символ: класс вне местоположения: класс System. В журнале показывает много ошибок, в т.ч.

java.lang.ClassFormatError: Метод "" в классе Area имеет недопустимую подпись "(Ljava/lang/Object;)Ljava/lang/System$out$println;"

import java.util.*;
class Area
{
double pi=3.14;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the value of r");
int r=sc.nextInt();
System.out.println("enter the value h");
int h=sc.nextInt();
void areaOfCircle()
   {
     double area1=pi*r*r;
     System.out.println("area of circle="+area1);
   }
void areaOfCylinder()
   {
     double area2=2*pi*r*(r+h);
     System.out.println("area of cylinder="+area2);
   }
public static void main(String args[])
   {
     Area a=new Area();
     a.areaOfCircle();
     a.areaOfCylinder();
   }
}

person Shagufta Oliveyu Methwani    schedule 29.06.2014    source источник


Ответы (5)


Оператор System.out.println(""); должен быть записан в каком-то блоке. Его нельзя написать прямо в классе.

public class ClassName {
   System.out.println("this statement gives error"); // Error!! 
}

Либо он должен быть внутри фигурных скобок {...}, например:

{ System.out.println("this works fine"); }

Это блок инициализации.

Или это должно быть написано в методе вроде:

public void methodName(){
    System.out.println("inside a method, prints fine");
}

Ваша полная программа должна выглядеть так:

public class Area {
double pi = 3.14;
int r;
int h;

void areaOfCircle() {
    double area1 = pi * r * r;
    System.out.println("area of circle=" + area1);
}

void areaOfCylinder() {
    double area2 = 2 * pi * r * (r + h);
    System.out.println("area of cylinder=" + area2);
}

public static void main(String args[]) {

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the value of r");
    Area a = new Area();
    a.r = sc.nextInt();
    System.out.println("enter the value h");
    a.h = sc.nextInt();
    a.areaOfCircle();
    a.areaOfCylinder();
   }
}
person Mandar Pandit    schedule 29.06.2014
comment
Никогда не рекомендуется использовать переменную поля напрямую, например a.r или a.h. Я только что предоставил быстрое решение для запуска вашей программы. - person Mandar Pandit; 29.06.2014
comment
На вопрос «Есть ли ошибка в следующем коде?» ответ «Вот ваш рабочий код» не отвечает на вопрос. Объясните, какие изменения вы внесли и почему. Вы не оказываете OP никаких услуг, исправляя вещи без объяснения причин - он / она может легко совершить ту же ошибку и не знать, как ее исправить, потому что он / она никогда не узнает причину, по которой это произошло. - person awksp; 29.06.2014
comment
@user3580294: user3580294: Я думаю, что теперь этого вполне достаточно для хорошего ответа. Спасибо! - person Mandar Pandit; 29.06.2014

Вы не можете размещать код вне методов в Java. У вас есть

System.out.println("Enter the value of r");

что не принадлежит ничему. Устраните эти проблемы, и проблема исчезнет.

Просто для любопытства, как должны вызываться внешние методы кода и из чего, по-вашему? Я имею в виду, что выполнение выполняется потоком кода, который начинается с точки входа (метод main в Java) и переходит к вызываемым методам, в конечном итоге порождая другие потоки. Код, который не находится внутри метода, недоступен и ни к чему не приводит.

person Jack    schedule 29.06.2014

В java это не работает, любое поведение, которое вы хотите реализовать, вы должны сделать это внутри блока или метода.

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

Помните, что у класса могут быть только атрибуты или методы. Атрибуты — это свойства класса, а методы представляют поведение класса. Таким образом, каждая реализация находится внутри метода или блока.

Единственное, что разрешено вне объявлений методов и конструкторов, — это объявления полей. С

Scanner sc=new Scanner(System.in);
System.out.println("Enter the value of r");
int r=sc.nextInt();
System.out.println("enter the value h");
int h=sc.nextInt();

это не объявление поля, это не разрешено.

person SparkOn    schedule 29.06.2014

Следующий код

System.out.println("Enter the value of r");
int r=sc.nextInt();
System.out.println("enter the value h");
int h=sc.nextInt();

должен быть внутри метода. Не прямо в классе. Классы могут содержать объявления полей и методов, но не произвольный код.

person JB Nizet    schedule 29.06.2014

Вам не хватает основ Java.

Проблема:

Операции обработки должны быть только в функции.

Решение:

Scanner sc=new Scanner(System.in);
System.out.println("Enter the value of r");
int r=sc.nextInt();
System.out.println("enter the value h");
int h=sc.nextInt();

Разместите приведенный выше код либо в функции, либо в конструкторе, внеся изменения в соответствии с вашими требованиями.

person Ysr Shk    schedule 29.06.2014