Java 升华文本无法识别数字格式

Java 升华文本无法识别数字格式,java,sublimetext3,number-formatting,Java,Sublimetext3,Number Formatting,我在(Windows 10)Supreme text 3文件NumberFormat.java中有以下简单代码,用于将double格式转换为美元: import java.util.Scanner; import java.text.NumberFormat; import java.util.Locale; public class NumberFormat { public static void main(String[] args) { double num

我在(Windows 10)Supreme text 3文件
NumberFormat.java
中有以下简单代码,用于将double格式转换为美元:

import java.util.Scanner;
import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormat {

    public static void main(String[] args) {
        double num = 1000.322;
        NumberFormat defaultFormat = NumberFormat.getCurrencyInstance();
        System.out.println("US: " + defaultFormat.format(num));
        return;
    }
}
但是,当我构建时,后面的错误只显示在NumberFormat中

NumberFormat.java:2: error: NumberFormat is already defined in this compilation unit
import java.text.NumberFormat;
^
NumberFormat.java:10: error: cannot find symbol
        NumberFormat defaultFormat = NumberFormat.getCurrencyInstance();
                                                 ^
  symbol:   method getCurrencyInstance()
  location: class NumberFormat
NumberFormat.java:11: error: cannot find symbol
        System.out.println("US: " + defaultFormat.format(num));
                                                 ^
  symbol:   method format(double)
  location: variable defaultFormat of type NumberFormat
3 errors

就我所见,代码没有错误。此外,此代码段输出的
US:$1000.32
与所有其他IDE和文本编辑器上的输出一样。有人能解释一下这些错误是什么意思吗?为什么它们只出现在升华文本中?

我认为您应该将类名修改为与导入的类名不同的类,或者您可以将源代码更改为

java.text.NumberFormat defaultFormat=java.text.NumberFormat.getCurrencyInstance();

问题在于,您已将名为
NumberFormat
的类导入到具有相同名称的类中。这会导致混淆
NumberFormat
实际指的是哪个类

(实际上,混淆在你的脑海中。Java语言规范对此很清楚。它说,
NumberFormat
将专门引用你的类。导入无效。任何兼容的Java编译器都会做出相同的解释。)

有两种解决方案:

  • 不要导入该类。而是使用它的完全限定名来引用它

  • 更改类的名称,使其不会与要导入的类冲突

  • 在我看来,第二种解决方案更好。尤其是
    NumberFormat
    对您的类来说并不是一个好名字


    为什么它们只出现在崇高的文本中

    他们没有。您编写的代码不会使用任何一致的Java编译器进行编译。

    导入java.text.NumberFormat


    与同一文件中定义的类型冲突。更改类名可以解决问题。

    这不是一个崇高的问题。升华只是从您的路径调用javac命令。如果在sublime之外使用javac进行编译,则会得到相同的结果

    更改类名或作为显式包名的一部分可以解决此问题