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

#java #system.out

#java #system.out

Вопрос:

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

java.lang.Ошибка classformatererror: метод «» в области класса имеет недопустимую подпись » (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();
   }
}
  

Ответ №1:

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

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

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

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

Ответ №2:

Оператор 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();
   }
}
  

Комментарии:

1. Никогда не рекомендуется использовать переменную поля напрямую, как a.r или a.h . Я только что предоставил быстрое решение для запуска вашей программы.

2. Учитывая вопрос «Есть ли какая-либо ошибка в следующем коде?», «ответ», который гласит: «Вот ваш рабочий код», не отвечает на вопрос. Пожалуйста, объясните, какие изменения вы внесли и почему . Вы не делаете OP никаких одолжений, исправляя вещи без объяснения причин — он / она может легко совершить ту же ошибку и не знать, как ее исправить, потому что он / она так и не узнал причину, по которой это произошло.

3. @user3580294: Я думаю, что теперь этого вполне достаточно для хорошего ответа. Спасибо!

Ответ №3:

В 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();
  

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

Ответ №4:

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

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

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

Ответ №5:

Вам не хватает основ 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();
  

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