0

我试图找出为什么我在 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 错误

4

1 回答 1

0

您需要将该Salary类与该类放在同一个包中,SalaryDemo或者您需要SalaryDemoimport。如果它们已经在同一个包中,这意味着你没有编译Salary,你需要发布你是如何运行编译器的。

它实际上并没有报告问题发现ArrayList,只是Salary。当您收到此错误时:

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

它告诉你的是参数化类型ArrayList<Salary>不存在。但它不存在,因为Salary不存在。这只是先前错误的结果。

于 2013-03-19T13:49:16.623 回答