Java 命令行参数
我现在正在用JAVA学习命令行。我是初学者。我为我的项目编写了一个硬代码,但我不知道如何应用命令行Java 命令行参数,java,command-line,Java,Command Line,我现在正在用JAVA学习命令行。我是初学者。我为我的项目编写了一个硬代码,但我不知道如何应用命令行 public class SalesRep private String firstName; private String lastName; private String employeeID; private double grossSales; private double commissionRate; public SalesRep(String[] args) { if
public class SalesRep
private String firstName;
private String lastName;
private String employeeID;
private double grossSales;
private double commissionRate;
public SalesRep(String[] args)
{
if (args.length != 5)
System.out.printf("Error");
else
{
firstName = args[0];
lastName = args[1];
employeeID = args[2];
grossSales = Double.parseDouble(args[3]);
commissionRate = Double.parseDouble(args[4]);
}
if (grossSales < 0.0)
throw new IllegalArgumentException
("Gross sale must be greater than or equal 0.0");
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException
("Comission rate must be in between 0.0 and 1.0");
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public String getEmployeeID()
{
return employeeID;
}
public void setGrossSales(double grossSales)
{
if (grossSales < 0.0)
throw new IllegalArgumentException
("Gross sales must be greater than or equal 0.0");
this.grossSales = grossSales;
}
public double getGrossSales()
{
return grossSales;
}
public void setCommissionRate(double commissionRate)
{
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException
("Comission rate must be in between 0.0 and 1.0");
this.commissionRate = commissionRate;
}
public double getCommissionRate()
{
return commissionRate;
}
public double earnings()
{
return getCommissionRate() * getGrossSales();
}
@Override
public String toString()
{
return String.format("%s: %s %s%n%s: %s%n%s: %.2f%n%s: %.2f",
"Sale Representatives", firstName, lastName,
"Employee ID", employeeID,
"Gross Sales", grossSales,
"Commission Rate", commissionRate);
}
公共类SalesRep
私有字符串名;
私有字符串lastName;
私有字符串employeeID;
私人双格罗萨莱斯酒店;
私人双佣金率;
public SalesRep(字符串[]args)
{
如果(参数长度!=5)
System.out.printf(“错误”);
其他的
{
firstName=args[0];
lastName=args[1];
employeeID=args[2];
Grossales=Double.parseDouble(args[3]);
佣金率=Double.parseDouble(args[4]);
}
如果(格罗萨莱斯<0.0)
抛出新的IllegalArgumentException
(“总销售额必须大于或等于0.0”);
如果(佣金率=1.0)
抛出新的IllegalArgumentException
(“佣金率必须介于0.0和1.0之间”);
}
公共字符串getFirstName()
{
返回名字;
}
公共字符串getLastName()
{
返回姓氏;
}
公共字符串getEmployeeID()
{
返回员工ID;
}
公共无效塞格罗萨莱斯(双格罗萨莱斯)
{
如果(格罗萨莱斯<0.0)
抛出新的IllegalArgumentException
(“总销售额必须大于或等于0.0”);
this.grossales=grossales;
}
公共双GetGrossales()
{
返回格罗萨莱斯;
}
公共部门佣金率(双重佣金率)
{
如果(佣金率=1.0)
抛出新的IllegalArgumentException
(“佣金率必须介于0.0和1.0之间”);
this.commissionRate=佣金率;
}
公共双重佣金率()
{
退货佣金率;
}
公共双收入()
{
返回getCommissionRate()*getGrossales();
}
@凌驾
公共字符串toString()
{
返回字符串.格式(“%s:%s%s%n%s:%s%n%s:%.2f%n%s:%.2f”,
“销售代表”,名,姓,
“员工ID”,员工ID,
“总销售额”,Grossales,
“佣金率”,佣金率);
}
我知道命令行参数有问题。但我不知道如何修复它。有人能帮我吗?您的程序正处于这种状态:
if (args.length != 5)
System.out.printf("Error");
因此,在输出中打印“错误”。
要使用命令行参数运行程序,请使用:
java SalesRepTest arg0 arg1 arg2 arg3 arg4
其中arg0,…,arg4表示您的参数。正确的代码是:
public class SalesRep{
private String firstName;
private String lastName;
private String employeeID;
private double grossSales;
private double commissionRate;
public SalesRep(String[] args)
{
if (args.length != 5)
System.out.printf("Error");
else
{
firstName = args[0];
lastName = args[1];
employeeID = args[2];
grossSales = Double.parseDouble(args[3]);
commissionRate = Double.parseDouble(args[4]);
}
if (grossSales < 0.0)
throw new IllegalArgumentException
("Gross sale must be greater than or equal 0.0");
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException
("Comission rate must be in between 0.0 and 1.0");
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public String getEmployeeID()
{
return employeeID;
}
public void setGrossSales(double grossSales)
{
if (grossSales < 0.0)
throw new IllegalArgumentException
("Gross sales must be greater than or equal 0.0");
this.grossSales = grossSales;
}
public double getGrossSales()
{
return grossSales;
}
public void setCommissionRate(double commissionRate)
{
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException
("Comission rate must be in between 0.0 and 1.0");
this.commissionRate = commissionRate;
}
public double getCommissionRate()
{
return commissionRate;
}
public double earnings()
{
return getCommissionRate() * getGrossSales();
}
@Override
public String toString()
{
return String.format("%s: %s %s%n%s: %s%n%s: %.2f%n%s: %.2f",
"Sale Representatives", firstName, lastName,
"Employee ID", employeeID,
"Gross Sales", grossSales,
"Commission Rate", commissionRate);
}
public static void main(String [] args){
SalesRep s = new SalesRep(args);
}
}
然后,您可以运行并提供如下命令行参数:
java SalesRep arg1 arg2 arg3 arg4 arg4
好的,这样行。您不能向构造函数提供命令行参数,它只能用于main方法,但您可以将命令行参数作为参数传递给构造函数。您是否收到任何错误?您是否有
main
方法?您得到的错误是什么?您始终可以打印出参数,并查看获取命令行参数的顺序public class SalesRepTest{public static void main(String[]args){SalesRep Rep=new SalesRep(args);System.out.println(“\n通过toString获得的更新员工信息”);System.out.printf(%n%s%n%s:$%,.2f%n%n“,代表,“收入”,代表收入();}
我忘了添加这个测试类。我得到了这个答案,我不想这样。错误更新了toString销售代表获得的员工信息:null null员工ID:null总销售额:0.00佣金率:0.00收入:$0.00抱歉!我是计算机世界的新手。您输入的确切命令行是什么?还有,您是吗在Windows、Linux、Mac或其他设备上运行?是的,您可以向构造函数或任何其他方法提供命令行参数。args
只是一个String[]
。您可以将其传递给一个方法,也可以使用String[]执行任何其他操作
。提问者的代码就是这样做的。我正在使用NetBean!你知道如何在NetBeans上运行命令行吗?顺便说一句,谢谢你的帮助。请转到此链接:或者你可以下载并安装run With Arguments-plugin detail以运行带有参数的项目。你也可以通过右键单击项目来设置命令行参数转到您将在左窗格中找到的属性,单击它。然后将您的参数提供到参数中。只需参数。Jin您得到答案了吗?谢谢您的帮助!我正在尝试。但是,不知怎的,我得到了以下结果:销售代表:空空空空空空空员工ID:空总销售额:0.00佣金率:0.00收入:$0.00您可以吗解释这有什么问题?我对NetBeans使用了“java SalesRep arg0 arg1 arg2 arg3 arg4”。对吗?另一个答案已经为您指出了NetBeans的正确方向-
java SalesRep arg1 arg2 arg3 arg4 arg4