我试图找出为什么我在NetBeans 7.2.1 IDE中创建的程序无法在Notepad ++中编译和运行。这只是令我着迷的事情,我想知道为什么会这样。
该程序具有主类SalaryDemo和另一类Salary,其中包含该程序的设置方法和获取方法。除了计算错误外,它运行良好。我对如何在Notepad ++中运行感到好奇,设置了Notepad ++之后,我发现它无法运行。我试着去做dos,它做了同样的事情,所以我不认为它是Notepad ++。
该程序将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 salaryArray = new ArrayList<>();
^
symbol: class Salary
location: class SalaryDemo
SalaryDemo.java:37: error: unexpected type
ArrayList salaryArray = new ArrayList<>()
^
required: class
found: ArrayList
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 salaryArray = new ArrayList();
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中使用Shell并尝试编译并运行程序时使用的方法相同。目前,我真正知道的是,软件包包含一个程序(项目)的所有必需类。 package语句需要在主类(SalaryDemo)和子类Salary中都匹配。
我试图像NetBeans IDE一样将其放置在C: salarydemofinal目录中,但该方法不起作用。我知道我可能缺少一些基本知识。正如我提到的,我认为这应该可行。
我考虑了一下,将Notepad ++从方程式中剔除,并炮轰到DOS尝试进行编译,因为我发现了另一篇stackoverflow文章,该文章暗示所有Java文件都需要立即编译,例如javac * .java。我不知道这是否是积极的一步。错误数量减少到4,但是这次没有找到扫描仪。这是输出:
SalaryDemo.java:31:错误:找不到符号
扫描仪输入=新的Scanner(System.in);
^
符号:类扫描仪
位置:SalaryDemo类
SalaryDemo.java:31:错误:找不到符号
扫描仪输入=新的Scanner(System.in);
^
符号:类扫描仪
位置:SalaryDemo类
SalaryDemo.java:38:错误:找不到符号
ArrayList salumArray = new ArrayList();
^
符号:类ArrayList
位置:SalaryDemo类
SalaryDemo.java:38:错误:找不到符号
ArrayList salumArray = new ArrayList();
^
符号:类ArrayList
位置:SalaryDemo类
4个错误
您是否已导入Salary类?
如果不查看类的package和import语句,很难说出来。
谢谢大家的快速回复。 我知道这听起来像上个月我还没有学到任何东西,但是老实说,我不知道在NetBeans之外必须导入java.util和java.text包以外的任何东西。
您需要将Salary类与SalaryDemo放在同一程序包中,或者需要SalaryDemo至import。 如果它们已经在同一个软件包中,则意味着您没有在编译Salary,并且需要发布如何运行编译器。
它实际上并没有报告发现ArrayList的问题,只是报告Salary。 当您收到此错误时:
SalaryDemo.java:37: error: unexpected type
ArrayList salaryArray = new ArrayList<>()
^
required: class
found: ArrayList
where E is a type-variable:
E extends Object declared in class ArrayList
这说明参数化类型ArrayList不存在。 但是它不存在,因为Salary不存在。 这只是先前错误的结果。
纳撒尼尔解决了这个问题。 以前,我发布了找不到扫描仪的信息,并且我没有导入该信息。 当我添加导入语句时,它将进行编译。 这就是我编译程序的方式。 这是我用过的文章。 stackoverflow.com/questions/7373173/谢谢大家的帮助!