#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();
Опубликуйте приведенный выше код либо в функции, либо в конструкторе, внеся изменения в соответствии с вашими требованиями.