Java 对抛出异常的数据验证
我正在尝试读取一年第一季度经纪人收入的数字。我想确保不能输入0或更少,但当我输入0时,它只接受它,并且不会抛出异常? 我做错了什么?任何帮助都将不胜感激Java 对抛出异常的数据验证,java,validation,double,illegalargumentexception,Java,Validation,Double,Illegalargumentexception,我正在尝试读取一年第一季度经纪人收入的数字。我想确保不能输入0或更少,但当我输入0时,它只接受它,并且不会抛出异常? 我做错了什么?任何帮助都将不胜感激 public void setQuarter1(double newQuarter1) { if ( newQuarter1 > 0) quarter1 = newQuarter1; else throw new IllegalArgumentException("new quarter must be
public void setQuarter1(double newQuarter1)
{
if ( newQuarter1 > 0)
quarter1 = newQuarter1;
else
throw new IllegalArgumentException("new quarter must be > 0.0");
}
好的,这是我的全部作业代码
import java.util.Scanner;
public class Broker {
//(a) declare instance variables
private String department, firstName, lastName;
private double quarter1, quarter2, quarter3, quarter4;
//(b) Access methods for instance variables
public void setDepartmentName(String newName)
{
department=newName;
}
public String getDepartment ()
{
return department;
}
//set and get methods for first name
public void setFirstName (String newFirstName)
{
firstName=newFirstName;
}
public String getFirstName ()
{
return firstName;
}
//set and get methods for last name
public void setLastName(String newLastName)
{
lastName=newLastName;
}
public String getLastName ()
{
return lastName;
}
//set and get methods for Quarter 1
public void setQuarter1(double newQuarter1)
{
if ( newQuarter1 > 0)
quarter1 = newQuarter1;
else
throw new IllegalArgumentException(
"new quarter must be > 0.0");
}
public double getQuarter1()
{
return quarter1;
}
//set and get methods for Quarter 2
public void setQuarter2(double newQuarter2)
{
quarter2 = newQuarter2;
}
public double getQuarter2 ()
{
return quarter2;
}
//set and get methods for Quarter 3
public void setQuarter3(double newQuarter3)
{
quarter2 = newQuarter3;
}
public double getQuarter3 ()
{
return quarter3;
}
//set and get methods for Quarter 4
public void setQuarter4(double newQuarter4)
{
quarter4 = newQuarter4;
}
public double getQuarter4 ()
{
return quarter4;
}
//(c) class variable annualbrokerage total and two access methods
private static double brokerageTotal;
public void setbrokerageTotal(double newBrokerageTotal)
{
newBrokerageTotal=brokerageTotal;
}
//(c) constructor to initialise instance variables department,firstname and lastname
public Broker (String dept, String first, String last )
{
department = dept;
firstName = first;
lastName = last;
}
// (d) constructor to initialise all instance variables from (a)
public Broker (String dept, String first, String last,double q1,double q2,double q3,double q4 )
{
department = dept;
firstName = first;
lastName = last;
quarter1 = q1;
quarter2 = q2;
quarter3 = q3;
quarter4 = q4;
}
// (e) no-argument constructor to initialise default broker instance
public Broker ()
{
department = null;
firstName = null;
lastName = null;
quarter1 = 0;
quarter2 = 0;
quarter3 = 0;
quarter4 = 0;
}
//(f) Method to read in quarters from user
public void readInQuarters ()
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter Q1,Q2,Q3 and Q4 figures for broker:");
quarter1 = input.nextInt();
quarter2 = input.nextInt();
quarter3 = input.nextInt();
quarter4 = input.nextInt();
} //end of read in quarters method
// (g) getBrokerTotal Method to return total trades for 4 quarters
public double getBrokerTotal()
{
//code to calculate broker quarterly totals
double brokerTotal = quarter1 + quarter2 + quarter3 + quarter4;
return brokerTotal;
} //end of getBrokerTotal method
//(e) getBonus method to calculate brokers bonus
public double getBonus()
{
double bonusRate=0;
double bonus=0;
//bonus rate depending on department rate
if("Dublin"==department)
bonusRate=.12;
else if("London"==department)
bonusRate=.15;
else
bonusRate=.10;
bonus = (quarter1 + quarter2 + quarter3 + quarter4)*(bonusRate);
return bonus;
}
//(i) to string method for broker class
public String toString()
{
return String.format(" Name: "+ getFirstName()+"\n Surname: "+getLastName()+"\n Department: "+getDepartment()+"\n Total: "+getBrokerTotal()+"\n Bonus: "+getBonus()+"\n\n");
}//end of toString method
//(i) Static methods to read in broker array and output quarterly totals
//Quarter1 totals method
public static double getQuarter1Total (Broker[]brokerQuarter1Array)
{
double quarter1Total = brokerQuarter1Array[0].getQuarter1()+ brokerQuarter1Array[1].getQuarter1()+ brokerQuarter1Array[2].getQuarter1()+ brokerQuarter1Array[3].getQuarter1()
+ brokerQuarter1Array[4].getQuarter1() + brokerQuarter1Array[5].getQuarter1();
return quarter1Total;
}
//Quarter2 totals method
public static double getQuarter2Total (Broker[]brokerQuarter2Array)
{
double quarter2Total = brokerQuarter2Array[0].getQuarter2()+ brokerQuarter2Array[1].getQuarter2()+ brokerQuarter2Array[2].getQuarter2()+ brokerQuarter2Array[3].getQuarter2()
+ brokerQuarter2Array[4].getQuarter2() + brokerQuarter2Array[5].getQuarter2();
return quarter2Total;
}
//Quarter3 totals method
public static double getQuarter3Total (Broker[]brokerQuarter3Array)
{
double quarter3Total = brokerQuarter3Array[0].getQuarter3()+ brokerQuarter3Array[1].getQuarter3()+ brokerQuarter3Array[2].getQuarter3()+ brokerQuarter3Array[3].getQuarter3()
+ brokerQuarter3Array[4].getQuarter3() + brokerQuarter3Array[5].getQuarter3();
return quarter3Total;
}
//Quarter4 totals method
public static double getQuarter4Total (Broker[]brokerQuarter4Array)
{
double quarter4Total = brokerQuarter4Array[0].getQuarter4()+ brokerQuarter4Array[1].getQuarter4()+ brokerQuarter4Array[2].getQuarter4()+ brokerQuarter4Array[3].getQuarter4()
+ brokerQuarter4Array[4].getQuarter4() + brokerQuarter4Array[5].getQuarter4();
return quarter4Total;
}
// Static method to calculate total brokerage totals for all brokers
public static void setBrokerageTotal (Broker[] brokerTotalsArray)
{
double annualBrokerageTotal= brokerTotalsArray[0].getBrokerTotal() + brokerTotalsArray[1].getBrokerTotal()
+ brokerTotalsArray[2].getBrokerTotal() + brokerTotalsArray[3].getBrokerTotal() + brokerTotalsArray[4].getBrokerTotal() + brokerTotalsArray[5].getBrokerTotal();
}
// Static method to get the total bonuses for all brokers cobined
public static double getBrokerageBonus (Broker [] brokerageBonusTotalArray)
{
double totalBrokerageBonus = brokerageBonusTotalArray[0].getBonus()+ brokerageBonusTotalArray[1].getBonus()+ brokerageBonusTotalArray[2].getBonus()+ brokerageBonusTotalArray[3].getBonus()
+ brokerageBonusTotalArray[4].getBonus() + brokerageBonusTotalArray[5].getBonus();
return totalBrokerageBonus;
}
public static void main(String[]args)
{
//Part-B
///(a) create broker1 with the no argument constructor
Broker broker1=new Broker();
broker1.setDepartmentName("Dublin");
broker1.setFirstName("John");
broker1.setLastName("Wall");
broker1.setQuarter1(12);
broker1.setQuarter2(24);
broker1.setQuarter3(26);
broker1.setQuarter4(17);
System.out.print(broker1);
//(b) create broker2
Broker broker2 = new Broker("London","Sarah","May");
broker2.setQuarter1(8);
broker2.setQuarter2(11);
broker2.setQuarter3(7);
broker2.setQuarter4(9);
System.out.print(broker2);
//(c) create broker3
Broker broker3 = new Broker("London","Ruth","Lavin");
//call read in quarters method
broker3.readInQuarters();
System.out.print(broker3);
//(d) create broker4,broker5,broker6
Broker broker4=new Broker("Dublin","Conor","Smith",21,23,26,31);
Broker broker5=new Broker("Paris","Jerome","Duignan",14,14,17,18);
Broker broker6=new Broker("Paris","Patick","Bateman",23,24,26,35);
//(e) Create broker array
Broker[] brokers;
brokers=new Broker [6];
brokers[0]=broker1;brokers[1]=broker2;brokers[2]=broker3;brokers[3]=broker4;brokers[4]=broker5;brokers[5]=broker6;
//(f) Output second table
String[] headings ={"Dept","Firstname","Surname","Q1","Q2","Q3","Q4","Total","Bonus"};
//loop to print the headings
for (int i = 0; i < headings.length; i++)
{
System.out.print(headings[i]+" ");
}
//print a space under the headings
System.out.println(" \n");
//loop to print the main table plus format specifiers to align the text
for (int i = 0; i < 5; i++)
{
System.out.printf("%-7s %-13s %-11s %-6s %-6s %-6s %-6s %-10s %.1f \n\n",brokers[i].getDepartment(), brokers[i].getFirstName(),brokers[i].getLastName(),brokers[i].getQuarter1(),brokers[i].getQuarter2(),brokers[i].getQuarter3(),brokers[i].getQuarter4(),brokers[i].getBrokerTotal(),brokers[i].getBonus());
}
// console printout for quarterly totals
System.out.printf("%33s \n","Quarterly ");
System.out.printf("%29 %9s %6s %6s %6s %6s \n","Total ",getQuarter1Total(brokers),getQuarter2Total(brokers),getQuarter3Total(brokers),getQuarter4Total(brokers),getBrokerageBonus(brokers));
} //end of method main
} //end of class broker
import java.util.Scanner;
公共类经纪人{
//(a) 声明实例变量
私人字符串部门,名字,姓氏;
私人双人四分之一、二分之一、三分之一、四分之一;
//(b) 实例变量的访问方法
public void setDepartmentName(字符串newName)
{
部门=新名称;
}
公共部门()
{
退货部;
}
//设置和获取名字的方法
public void setFirstName(字符串newFirstName)
{
firstName=newFirstName;
}
公共字符串getFirstName()
{
返回名字;
}
//设置和获取姓氏的方法
public void setLastName(字符串newLastName)
{
lastName=newLastName;
}
公共字符串getLastName()
{
返回姓氏;
}
//第1季度的设置和获取方法
公共无效设置季度1(双新季度1)
{
如果(新季度1>0)
四分之一=新四分之一;
其他的
抛出新的IllegalArgumentException(
“新季度必须大于0.0”);
}
公共双getQuarter1()
{
第1季度返回;
}
//第二季度的设置和获取方法
公共无效设置季度2(双新季度2)
{
quarter2=newQuarter2;
}
公共双getQuarter2()
{
第二季度返回;
}
//第三季度的设置和获取方法
公共无效设置季度3(双新季度3)
{
quarter2=newQuarter3;
}
公共双四分之三()
{
第三季度返回;
}
//第四季度的设置和获取方法
公共无效设置季度4(双新季度4)
{
quarter4=newQuarter4;
}
公共双四分之四()
{
第四季度返回;
}
//(c) 类变量annualbrokerage total和两种访问方法
私人静态双经纪公司;
公共收入总额(双倍新收入总额)
{
newBrokerageTotal=经纪公司总计;
}
//(c) 构造函数初始化实例变量department、firstname和lastname
公共经纪人(字符串部门、字符串优先、字符串最后)
{
部门=部门;
firstName=first;
lastName=last;
}
//(d)构造函数初始化(a)中的所有实例变量
公共经纪人(字符串部门、字符串第一、字符串最后、双q1、双q2、双q3、双q4)
{
部门=部门;
firstName=first;
lastName=last;
四分之一=q1;
四分之一=q2;
四分之一=q3;
四分之一=q4;
}
//(e)没有用于初始化默认代理实例的参数构造函数
公共经纪人()
{
部门=空;
firstName=null;
lastName=null;
四分之一=0;
四分之一=0;
四分之一=0;
四分之一=0;
}
//(f) 从用户处读取四分之一硬币的方法
公共空读区()
{
扫描仪输入=新扫描仪(System.in);
System.out.println(“请为经纪人输入Q1、Q2、Q3和Q4数字:”);
quarte1=input.nextInt();
quarte2=input.nextInt();
quarte3=input.nextInt();
quarter4=input.nextInt();
}//读入四分之一方法的结束
//(g)getBrokerTotal方法返回4个季度的交易总额
public double getBrokerTotal()
{
//计算经纪人季度总计的代码
double brokerTotal=quarter1+quarter2+quarter3+quarter4;
返回brokerTotal;
}//getBrokerTotal方法的结尾
//(e) 计算经纪人奖金的getBonus方法
公共双倍奖金()
{
双骨率=0;
双倍奖金=0;
//奖金率取决于部门费率
如果(“都柏林”==部门)
骨率=.12;
否则,如果(“伦敦”==部门)
骨率=.15;
其他的
骨率=.10;
奖金=(第1季度+第2季度+第3季度+第4季度)*(bonusRate);
回报奖金;
}
//(i) 为代理类创建字符串方法
公共字符串toString()
{
返回字符串.格式(“名称:“+getFirstName()+”\n姓氏:“+getLastName()+”\n部门:“+getDepartment()+”\n总计:“+getBrokerTotal()+”\n奖金:“+getBonus()+”\n\n”);
}//toString结束方法
//(i) 读取代理数组并输出季度总计的静态方法
//四分之一总计法
公共静态双GetQuarter1总计(Broker[]BrokerQuarter1阵列)
{
double quarter1Total=brokerQuarter1Array[0]。getQuarter1()+brokerQuarter1Array[1]。getQuarter1()+brokerQuarter1Array[2]。getQuarter1()+brokerQuarter1Array[3]。getQuarter1()
+BrokerQuarter1阵列[4]。getQuarter1()+BrokerQuarter1阵列[5]。getQuarter1();
返回四分之一总数;
}
//四分之二总计法
公共静态双getQuarter2Total(Broker[]brokerQuarter2Array)
{
double quarter2Total=brokerQuarter2Array[0]。getQuarter2()+brokerQuarter2Array[1]。getQuarter2()+brokerQuarter2Array[2]。getQuarter2()+brokerQuarter2Array[3]。getQuarter2()
+brokerQuarter2Array[4]。getQuarter2()+brokerQuarter2Array[5]。getQuarter2();
返回四分之二总数;
}
//四分之三总计法
公共静态双GetQuarter3总计(Broker[]BrokerQuarter3阵列)
{
double quarter3Total=brokerQuarter3Array[0]。getQuarter3()+brokerQuarter3Array[1]。getQuarter3()+brokerQuarter3Array[2]。getQuarter3()+brokerQuarter3Array[3]。getQuarter3()
+brokerQuarter3Array[4]。getQuarter3()+brokerQuarter3Array[5]。getQuarter3();
返回四分之三总数;
}
//四分之一总计法
公共静态双getQuarter4Total(Broker[]brokerQuarter4Array)
{
double quarter4Total=brokerQuarter4Array[0]。getQuarter4()+brokerQuarter4Array[1]。getQuarter4()+brokerQuarter4Array[2]。getQuarter4()+brokerQuarter4Array[3]。getQuarter4()
+经纪曲
public void readInQuarters () {
Scanner input = new Scanner(System.in);
System.out.println("Please enter Q1,Q2,Q3 and Q4 figures for broker:");
quarter1 = input.nextInt(); // <-- Use your setters!
quarter2 = input.nextInt();
quarter3 = input.nextInt();
quarter4 = input.nextInt();
// should be,
setQuarter1(input.nextInt()); // and so on... although I will point out, you should
// be reading double(s) apparently.
}
boolean validate() {
int c = Integer.parseInt(txtFieldSetupTopElevation.getText().toString().trim());
if (c <= 0) {
// Here use code for show msg error or information
// return true if value is greater than 0 other wise return else
return false;
}
}