Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “a”是什么意思;找不到符号“;或;无法解析符号“;误差平均值?_Java_Compiler Errors_Cannot Find Symbol - Fatal编程技术网

Java “a”是什么意思;找不到符号“;或;无法解析符号“;误差平均值?

Java “a”是什么意思;找不到符号“;或;无法解析符号“;误差平均值?,java,compiler-errors,cannot-find-symbol,Java,Compiler Errors,Cannot Find Symbol,请解释以下关于“找不到符号”、“无法解析符号”或“找不到符号”的错误(Java): 它们是什么意思 什么事情会导致它们 程序员如何着手修复它们 这个问题旨在对Java中的这些常见编译错误进行全面的问答。0。这两个错误之间有什么区别吗? 不是真的。“找不到符号”、“无法解析符号”和“找不到符号”的含义相同。不同的Java编译器使用不同的术语 1.“找不到符号”错误是什么意思? 首先,这是一个编译错误1。这意味着要么Java源代码中存在问题,要么编译它的方式存在问题 Java源代码由以下内容组成

请解释以下关于“找不到符号”、“无法解析符号”或“找不到符号”的错误(Java):

  • 它们是什么意思
  • 什么事情会导致它们
  • 程序员如何着手修复它们
这个问题旨在对Java中的这些常见编译错误进行全面的问答。

0。这两个错误之间有什么区别吗? 不是真的。“找不到符号”、“无法解析符号”和“找不到符号”的含义相同。不同的Java编译器使用不同的术语

1.“找不到符号”错误是什么意思? 首先,这是一个编译错误1。这意味着要么Java源代码中存在问题,要么编译它的方式存在问题

Java源代码由以下内容组成:

  • 关键词:如
    true
    false
    class
    while
    ,等等
  • 文字:如
    42
    'X'
    “嗨,妈妈!”
  • 运算符和其他非字母数字标记:如
    +
    =
    {
    ,等等
  • 标识符:如
    Reader
    i
    toString
    processequivalancedelephants
    ,等等
  • 注释和空白
“找不到符号”错误与标识符有关。编译代码时,编译器需要计算代码中每个标识符的含义

“找不到符号”错误表示编译器无法执行此操作。您的代码似乎引用了编译器不理解的内容

2.什么会导致“找不到符号”错误? 首先,原因只有一个。编译器查找了应该定义标识符的所有位置,但找不到定义。这可能是由多种原因造成的。常见的原因如下:

  • 对于一般标识符:

    • 可能您拼写不正确;例如,
      StringBiulder
      而不是
      StringBuilder
      。Java无法也不会尝试弥补拼写错误或键入错误
    • 可能您的大小写错了;即
      stringBuilder
      而不是
      stringBuilder
      。所有Java标识符都区分大小写
    • 也许您使用下划线不恰当;例如,
      mystring
      myu string
      是不同的。(如果您坚持Java风格的规则,您将在很大程度上避免此错误……)
    • 可能您正试图使用声明为“其他地方”的内容;例如,在不同的上下文中,隐式地告诉编译器要查看的内容。(不同的类?不同的范围?不同的包?不同的代码库?)
  • 对于应引用变量的标识符:

    • 也许您忘记声明变量了
    • 可能在您尝试使用变量声明时,该变量声明超出了范围。(请参见下面的示例)
  • 对于应为方法或字段名的标识符:

    • 可能您正试图引用未在父/祖先类或接口中声明的继承方法或字段

    • 可能您试图引用的方法或字段在您使用的类型中不存在(即尚未声明);例如
      “someString”.push()
      2

    • 可能您正试图使用一个方法作为字段,反之亦然;例如
      “someString”.length
      somesarray.length()

    • 可能您错误地操作了数组而不是数组元素;例如

          String strings[] = ...
          if (strings.charAt(3)) { ... }
          // maybe that should be 'strings[0].charAt(3)'
      
  • 对于应为类名的标识符:

    • 也许你忘了导入这个类

    • 也许您使用了“星型”导入,但是在您导入的任何包中都没有定义该类

    • 可能您忘记了一个
      新的
      ,如:

          String s = String();  // should be 'new String()'
      
  • 对于类型或实例似乎没有您期望的成员的情况:

    • 可能您已经声明了一个嵌套类或泛型参数,该类或泛型参数隐藏了您想要使用的类型
    • 也许您正在隐藏一个静态或实例变量
    • 可能您导入了错误的类型;例如,由于IDE完成或自动更正
    • 也许您正在使用(针对)错误版本的API
    • 也许您忘了将对象强制转换为适当的子类
问题通常是上述因素的组合。例如,可能您“star”导入了
java.io.*
,然后尝试使用
Files
类…它位于
java.nio
中,而不是
java.io
。或者可能您打算编写
File
,它是
java.io
中的一个类


下面是一个不正确的变量作用域如何导致“找不到符号”错误的示例:

这将在
println
调用中给您一个编译错误,表示找不到
i
。但是(我听到您说)我确实声明了它

问题在于
{
前面的分号(
)很隐蔽。Java语言语法将该上下文中的分号定义为空语句。空语句随后成为
for
循环的主体。因此,该代码实际上意味着:

for (int i = 0; i < 100; i++); 

// The previous and following are separate statements!!

{
    System.out.println("i is " + i);
}
尽管有前面的声明,但
tmp(…)
表达式中的
tmp
是错误的。编译器将查找名为
tmp
的方法,但找不到。前面声明的
tmp
位于变量的命名空间中,而不是方法的命名空间中

在这个例子中,我遇到了
for (int i = 0; i < 100; i++); {
    System.out.println("i is " + i);
}
for (int i = 0; i < 100; i++); 

// The previous and following are separate statements!!

{
    System.out.println("i is " + i);
}
int tmp = ...
int res = tmp(a + b);
int res = tmp * (a + b);
for (int i = 1; i < 10; i++) {
    for (j = 1; j < 10; j++) {
        ...
    }
}
String s = ...
String s1 = s.substring(1);
String s = String();
String s = new String();
if(somethingIsTrue()) {
  String message = "Everything is fine";
} else {
  String message = "We have an error";
}
System.out.println(message);
if(somethingIsTrue()) {
  String message = "Everything is fine";
  System.out.println(message);
} else {
  String message = "We have an error";
  System.out.println(message);
}
String message = "We have an error";
if(somethingIsTrue()) {
  message = "Everything is fine";
} 
System.out.println(message);
error: cannot find symbol
class demo{ 
      public static void main(String a[]){
             System.out.print(name);
      }
}
class demo{ 
      public static void main(String a[]){

             String name="smith";

             System.out.print(name);
      }
}
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
plugins {
    ...
    id 'java-library'
}