Sublime Text无法识别NumberFormat

时间:2017-09-06 02:05:22

标签: java sublimetext3 number-formatting

我在(Windows 10)崇高文本3文件Edge中有以下简单代码,用于格式化双倍美国货币:

Solid

但是,当我构建时,跟随错误仅出现在NumberFormat中。

NumberFormat.java

据我所知,代码没有错误。此外,此代码段在所有其他IDE和文本编辑器上输出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; } } 。有人可以解释这些错误的含义吗?为什么他们只与崇高的文本一起出现?

4 个答案:

答案 0 :(得分:5)

问题是您已将名为NumberFormat的类导入到具有相同名称的类中。这导致了NumberFormat类实际引用的混淆。

(实际上你的想法很混乱.Java语言规范很明确。它说NumberFormat将专门引用你的类。导入没有效果。任何兼容的Java编译器都会这样做的解释。)

有两种解决方案:

  1. 不要导入课程。而是使用其完全限定名称来引用它。

  2. 更改班级名称,使其不与您要导入的班级发生冲突。

  3. 在我看来,第二种解决方案更好。特别是因为NumberFormat无论如何都不是你班级的好名字。

      

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

    他们没有。您编写的代码不会使用任何符合标准的Java编译器进行编译。

答案 1 :(得分:3)

我认为您应该将类​​名修改为与导入的类名不同的类,或者您可以将源更改为 java.text.NumberFormat defaultFormat = java.text.NumberFormat.getCurrencyInstance();

答案 2 :(得分:1)

这不是Sublime的问题。 Sublime只是从你的路径调用javac命令。如果在sublime

之外使用javac进行编译,则会得到相同的结果

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

答案 3 :(得分:0)

  

import java.text.NumberFormat

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