dos系统运行java找不到符号_关于java:编译错误:找不到符号

我试图找出为什么我在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/谢谢大家的帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值