2013-12-20 4 views
0

Я пытаюсь прочитать цифру для прибыли брокеров в течение квартала один год. Я хочу, чтобы 0 или меньше не было введено, но когда я вхожу 0, он просто берет его во всяком случае и не бросает исключение? Что я делаю неправильно? Любая помощь будет принята с благодарностью.Проверка данных на исключение броска

public void setQuarter1(double newQuarter1) 
{ 
    if (newQuarter1 > 0) 
    quarter1 = newQuarter1; 
    else 
    throw new IllegalArgumentException("new quarter must be > 0.0"); 
} 

Ok Heres мой весь код присваивание

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 

эр

+1

Вы уверены, что вы входите в 0? Попробуйте распечатать 'newQuarter1' перед условием. – Eran

+0

Вам нужно будет отлаживать. Вот некоторые идеи о том, что может быть неправильным, каждый из которых вы должны проверить: не вызывать этот метод. Вызов его с другим значением. Незаметно поймать исключение, прежде чем он попадет в код, предназначенный для его обработки. –

+0

, если newquarter1 равен 0.0 или 0, тогда вы получите исключение. Поделитесь своим полным кодом здесь. –

ответ

0

Вы не используете свои сеттеров. Проблема здесь

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. 
} 
+0

Ах да, я вижу это сейчас, и спасибо за указание, что у меня тоже есть двойники. Спасибо! –

0

Привет друг у меня есть дать предложение, которое я тоже использовать в нашем проекте вызова этого метода перед отправкой значения. И если возвращение правды, то обновление данных других мудрых шоу MGS в методе проверки того, где от обновления вызова

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; 
    } 
} 

Sandeep

Смежные вопросы