以下代码中是否有任何错误?它显示无法找到符号,符号:class out location:class 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();
}
}
答案 0 :(得分:3)
您不能在Java中将方法放在方法之外。
System.out.println("Enter the value of r");
不属于任何东西。解决这些问题,问题就会消失。
只是出于好奇,如何根据你的方式调用外部方法的代码?我的意思是执行是由一个从入口点(Java中的main
方法)开始的代码流完成的,并跳转到调用的方法,最终产生其他线程。不存在于方法中的代码也无法访问,也不会导致任何内容。
答案 1 :(得分:1)
语句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();
}
}
答案 2 :(得分:1)
在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();
不是字段声明,不允许使用。
答案 3 :(得分:0)
以下代码
System.out.println("Enter the value of r");
int r=sc.nextInt();
System.out.println("enter the value h");
int h=sc.nextInt();
必须在方法内。不是直接在课堂上。类可以包含字段和方法声明,但不包含任意代码。
答案 4 :(得分:0)
您缺少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();
通过根据您的要求进行更改,在函数或构造函数中发布上述代码。