我在(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;
}
}
。有人可以解释这些错误的含义吗?为什么他们只与崇高的文本一起出现?
答案 0 :(得分:5)
问题是您已将名为NumberFormat
的类导入到具有相同名称的类中。这导致了NumberFormat
类实际引用的混淆。
(实际上你的想法很混乱.Java语言规范很明确。它说NumberFormat
将专门引用你的类。导入没有效果。任何兼容的Java编译器都会这样做的解释。)
有两种解决方案:
不要导入课程。而是使用其完全限定名称来引用它。
更改班级名称,使其不与您要导入的班级发生冲突。
在我看来,第二种解决方案更好。特别是因为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
与同一文件中定义的类型冲突。更改班级名称可以解决问题。