2016-10-21 1 views
0

Привет, У меня возникли проблемы с назначением значений в объекте, который я пытаюсь сделать, он вызывает первоначально заданную переменную, а не тот, который я установил, используя мой метод setter, нечетный дело в том, что он, кажется, правильно пройти через первый сканер, как мой метод математика работает как надо вот код:Проблемы с сеттерами в Java - Программа интернет-Билла

главный

package a2.internetbill; 
import java.util.Scanner; 

public class A2InternetBill { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    String type = "A"; 
    int nUsage = 0; 
    String nAccountName = "Bob"; 
    // inititates objects 
    Packages newPackageA = new Packages(type, nUsage, nAccountName, 0.0); 

    Scanner in = new Scanner(System.in); 

    // 
    System.out.println("Please enter a package type(Must be A, B, C or D):\n\r"); 
    type = in.nextLine(); 
    newPackageA.setPackageType(type); 

    System.out.println("Please Enter Your Name:\n\r "); 

    newPackageA.setAccountName(in.nextLine()); 

    System.out.println("Please enter how much GB of Data you used: \n\r"); 

    newPackageA.setUsage(in.nextInt()); 


    String outPut; 
    // do maths and prints formatted toString method 
    newPackageA.moneyMath(type, nUsage, nUsage); 
    outPut = newPackageA.toString(); 
    System.out.println(outPut); 
    System.out.println(newPackageA.getAccountName() + newPackageA.getUsage() + newPackageA.getPackageType()); 
    // TODO code application logic here 
     // instance variables 

} 

}

класс

/* 
* Makes internet package for specific user 
*/ 
package a2.internetbill; 

/** 
* 4 packages are: 
* PACKAGE A (IGNITE_60): 200GB usage for $49.99 per month. 
* Extra usage is $3.00 per GB. 
* 
    PACKAGE B (IGNITE_30): 125GB usage for $39.99 per month. 
    * Extra usage is $1.50 per GB. 
    PACKAGE C (INTERNET_5): 25GB usage for $24.99 per month. 
    * Extra usage is $5 per GB. 

    PACKAGE D (UNLIMITED_USAGE): For $69.99 per month 
    * unlimited access is provided. 

* @author sav 
*/ 


    public class Packages { 
    private String packageType; 
    private int usage; 
    private String accountName; 
    public double runningTotal; 


    //initiates a Packages object 
    public Packages(String type, int nUsage, String nAccountName, double nRunningTotal){ 
     packageType = type; 
     usage = nUsage; 
     accountName = nAccountName; 
     runningTotal = nRunningTotal; 

    } 


    // getters 
    public String getPackageType(){ 
     return packageType; 
    } 

    public int getUsage(){ 
     return usage; 
    } 

    public String getAccountName(){ 
     return accountName; 
    } 

    // setters  
    public void setPackageType(String type){ 
     type = packageType; 
    } 
    public void setUsage(int nUsage){ 
     nUsage = usage; 

    } 
    public void setAccountName(String nAccountName){ 
     nAccountName = accountName; 
    }  

    public void moneyMath(String type, int nUsage, double nRunningTotal){ 
     if (type.equals("A")){ 
      if (nUsage>=200){ 
       nRunningTotal = ((nUsage - 200) * 3) + 49.99; 
       type = "Ignite_60"; 
       packageType = type; 

      } 
      else{ 
       nRunningTotal = 49.99; 
       type = "Ignite_60"; 
       packageType = type; 
      } 
     } 
     else if (type.equals("B")){ 
      if (nUsage>=125){ 
       nRunningTotal = ((nUsage - 125) * 1.5) + 39.99; 
       type = "Ignite_30"; 
       packageType = type; 
      } 
      else{ 
       nRunningTotal = 39.99; 
       type = "Ignite_30"; 
       packageType = type; 
      } 
     } 
     else if (type.equals("C")){ 
      if (nUsage>=25){ 
       nRunningTotal = ((nUsage - 25) * 5) + 24.99; 
       type = "Internet_5"; 
       packageType = type; 
      } 
      else{ 
       nRunningTotal = 24.99; 
       type = "Internet_5"; 
       packageType = type; 
      } 
     } 
     else if (type.equals("D")){ 
      nRunningTotal = 69.99; 
      type = "Unlimited_Usage"; 
      packageType = type; 
     } 
     else{ 
      System.out.println("Something something something"); 
     } 



    } 

    // 

    /** 
    * Modified toString for specified outputs(formatted as assigned) 
    * @return 
    */ 
    @Override 
    public String toString(){ 
     return ("Dear, \n\r" + accountName + " \n\r You have selected the : " + packageType + " package, and your current amount due is: $" + runningTotal); 

    } 
} 

Пожалуйста, дайте мне знать, как использовать сканер правильно (я думаю, что это то, что сейчас вызывает вопрос), спасибо большое,

ответ

3

Ваши сеттеры неверны.

public void setPackageType(String type){ 
    type = packageType; 
} 
public void setUsage(int nUsage){ 
    nUsage = usage; 
} 
public void setAccountName(String nAccountName){ 
    nAccountName = accountName; 
} 

Должно быть,

public void setAccountName(String nAccountName){ 
    accountName = nAccountName; 
} 
public void setPackageType(String type){ 
    packageType = type; 
} 
public void setUsage(int nUsage){ 
    usage = nUsage; 
} 
Смежные вопросы