我试图找出为什么我在 NetBeans 7.2.1 IDE 中创建的程序无法在 Notepad++ 中编译和运行。这只是让我着迷的事情,我想知道为什么会这样。
该程序具有主类 SalaryDemo 和另一个类 Salary,其中包含该程序的 setter 和 getter。除了计算错误外,它运行良好。我很好奇这将如何在 Notepad++ 中运行,并且在设置 Notepad++ 之后,我发现它无法运行。我试图掏出做dos,它做了同样的事情,所以我不认为它是记事本++。
该程序将 ArrayList 用于销售代表和销售代表的年总销售额。由于某种原因,VM 找不到 ArrayList 或 Salary 变量的符号。这是我的理解。我真的很感激这方面的帮助。这是我的第一次,所以放轻松。
这是错误消息,如果您需要任何其他支持文档或代码,我会立即发布。
NPP_EXEC: "Compile and Run"
CD: Matches Current Directory
Current directory: Matches CD:
javac SalaryDemo.java
Process started >>>
SalaryDemo.java:37: error: cannot find symbol
ArrayList<Salary> salaryArray = new ArrayList<>();
^
symbol: class Salary
location: class SalaryDemo
SalaryDemo.java:37: error: unexpected type
ArrayList<Salary> salaryArray = new ArrayList<>()
^
required: class
found: <E>ArrayList<E>
where E is a type-variable:
E extends Object declared in class ArrayList
SalaryDemo.java:52: error: cannot find symbol
Salary employee = new Salary();
^
symbol: class Salary
location: class SalaryDemo
SalaryDemo.java:52: error: cannot find symbol
Salary employee = new Salary();
^
symbol: class Salary
location: class SalaryDemo
SalaryDemo.java:103: error: cannot find symbol
Salary calcSalary = new Salary();
^
symbol: class Salary
location: class SalaryDemo
SalaryDemo.java:103: error: cannot find symbol
Salary calcSalary = new Salary();
^
symbol: class Salary
location: class SalaryDemo
6 errors
这是相关代码
SalaryDemo (main class)
package salarydemofinal;
// Imports the DecimalFormat class and all java.util classes
import java.text.DecimalFormat;
SalaryDemo (main class)
// Public class SalaryDemo matches the filename and is accessable
// by methods outside the SalaryDemo class.
public class SalaryDemo
{
public static void main(String[] args)
{
// Initialize Scanner.
Scanner input = new Scanner(System.in);
// Initialize DecimalFormat to format percentages.
DecimalFormat df = new DecimalFormat("####%"); // Initialize
// Initialize the Array list and use the Salary class to store and
// manipulate elements of the array.
ArrayList<Salary> salaryArray = new ArrayList<Salary>();
String newEmployee = "";
double newSales = 0;
double counter;
double setSalesDifference;
double setTCompDifference;
double nqDifference;
Salary class
package salarydemofinal;
public class Salary {
// Initialize local Salary class variables
private String name; // Holds employee name
private double base = 4000; // Holds fixed monthly salary
private double sales; // Holds annual sales figure data-
private double calc; // Holds data calculate commission
private double com = .25; //Holds commission percentage multiplier
private double totalComp; // Holds sum of commission and annual salary data
private double annualSalary; // Holds data derived from 12 months of base rate
private double salesTarget = 120000;
private double threshold = salesTarget * .80;
private double commission; // sets the commission.
private double annualCompensation;
private double acceleratedSales;
private double notQualified;
这就是我在 Notepad++ 中运行编译器的方式……我确实意识到这不合常理,但是我觉得这应该可行。程序没有那么复杂。
cd "$(CURRENT_DIRECTORY)" javac $(FILE_NAME) java $(NAME_PART)
在我看来,这与您使用 DOS 并尝试编译和运行程序时使用的方法相同。此时,我真正知道的是,包包含一个程序(项目)所需的所有类。package 语句需要在主类(SalaryDemo)和子类 Salary 中匹配。
我试图将它放在 C:\\salarydemofinal 目录中,就像 NetBeans IDE 一样,但没有成功。我知道我可能缺少一些基本的东西。正如我所提到的,这在我看来应该可行。
我考虑了一下,将 Notepad++ 排除在外,转而使用 DOS 尝试编译它,因为我发现另一篇 stackoverflow 文章建议需要一次编译所有 java 文件,例如 javac *.java。我不知道这是否是积极的一步。错误数量减少到 4 个,但这次没有找到 Scanner。这是输出:
SalaryDemo.java:31: 错误: 找不到符号 Scanner input = new Scanner(System.in); ^ 符号:类扫描器位置:类 SalaryDemo SalaryDemo.java:31:错误:找不到符号扫描器输入 = 新扫描器(System.in);^ 符号:类扫描仪位置:类 SalaryDemo SalaryDemo.java:38:错误:找不到符号 ArrayList SalaryArray = new ArrayList(); ^ 符号:类 ArrayList 位置:类 SalaryDemo SalaryDemo.java:38:错误:找不到符号 ArrayList SalaryArray = new ArrayList(); ^ 符号:类 ArrayList 位置:类 SalaryDemo 4 错误