#java #io #setter #getter
#java #io #установщик #средство получения
Вопрос:
Привет, у меня возникли некоторые проблемы с присвоением значений в объекте, который я пытаюсь создать, он вызывает переменную, которую я установил изначально, а не ту, которую я установил с помощью моего метода setter, странно то, что, похоже, она правильно проходит через первый сканер, поскольку мой математический метод работает так, как должен, вот код:
Главная
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):nr");
type = in.nextLine();
newPackageA.setPackageType(type);
System.out.println("Please Enter Your Name:nr ");
newPackageA.setAccountName(in.nextLine());
System.out.println("Please enter how much GB of Data you used: nr");
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, nr" accountName " nr You have selected the : " packageType " package, and your current amount due is: $" runningTotal);
}
}
Пожалуйста, дайте мне знать, как правильно использовать сканер (я думаю, что именно это вызывает проблему прямо сейчас), большое вам спасибо,
Ответ №1:
Ваши настройки неверны.
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;
}