簡體   English   中英

“線程“主”中的異常 java.lang.NoSuchFieldError:”

[英]"Exception in thread "main" java.lang.NoSuchFieldError:"

我收到此錯誤:

線程“主”中的異常 java.lang.NoSuchFieldError: num1 at calificacion.main(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.");
}
}
}

提前致謝。

正如您可以在此處閱讀的,此錯誤表明您缺少字段num1 有關於NoSuchFieldException的簡短Baeldung 教程

關於您的問題。 這不是因為代碼(我已經成功編譯並運行了它)。 我相信這是因為編譯。 你在同一個目錄中有這些類嗎? 在編譯javac calification.java期間,應該有兩個文件calification.classnum.class 當您編譯第二個時,它可能會覆蓋num.class

如何解決這個問題?

  • 使用不同的目錄/包
  • 更改num類名稱之一,以免它們干擾

順便提一句。 在 Java 中,我們傾向於以大寫字母開頭的類名和以駝峰命名的變量,因此更易於閱讀:)

希望能幫助到你! 快樂編碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM