当前位置: 首页 > 知识库问答 >
问题:

线程“main”java.lang.NoSuchFieldError中出现异常:

糜运良
2023-03-14

我得到了这个错误:

线程“main”Java.lang.NosuchFielderRror:calificacion.main处的num1异常(problema_3.Java:17)

在这个简单的终端Java程序上键入第一个值后:


import java.io.*;

class num
{
int num1,num2,num3;
}

class calificacion
{
public static void main(String []Args)throws IOException
{
BufferedReader ob1=new BufferedReader(new InputStreamReader (System.in));
num DQ = new num();

System.out.println ("Ingrese primera calificación:");
DQ.num1 = Integer.parseInt(ob1.readLine());
System.out.println ("Ingrese segunda calificación:");
DQ.num2 = Integer.parseInt(ob1.readLine());
System.out.println ("Ingrese tercera calificación:");
DQ.num3 = Integer.parseInt(ob1.readLine());

System.out.println("\n\n");
System.out.println("Calificación final: "+(DQ.num1+DQ.num2+DQ.num3)/3);

}
}

另一方面,这一个运行良好,我使用相同的输入法在这两个:


import java.io.*;

class num
{
int numero;
}

class paroimpar
{
public static void main(String []Args)throws IOException
{
BufferedReader ob1=new BufferedReader(new InputStreamReader (System.in));
num DQ = new num();

System.out.println ("Ingrese un número entero para determinar si es par o impar:");
DQ.numero = Integer.parseInt(ob1.readLine());
System.out.println("\n\n");

if (DQ.numero%2==0){
System.out.println(DQ.numero+" es par.");
} else {
System.out.println(DQ.numero+" es impar.");
}
}
}

提前道谢。

共有1个答案

锺星洲
2023-03-14

从这里可以看到,该错误表示缺少字段num1。有关于nosuchfieldexception的简短Baeldung教程。

关于你的问题。这不是因为代码(我已经成功地编译并运行了它)。我相信是因为编译。那些类在同一个目录里吗?在编译javac calification.java期间,应该有两个文件outcalification.classnum.class。当您编译第二个时,它可能会重写num.class

如何解决这个问题?

  • 使用不同的目录/包
  • 更改一个num类名称,使其不会干扰

顺便说一句。在Java,我们倾向于用大写字母开头的类名字,用骆驼大小写开头的变量,这样读起来更容易:)

希望有帮助!编码快乐!

 类似资料: