Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何让kicker会员可以在下面三个加油站之间转移?_Java_Inheritance_Methods_Polymorphism_Instance - Fatal编程技术网

Java 我如何让kicker会员可以在下面三个加油站之间转移?

Java 我如何让kicker会员可以在下面三个加油站之间转移?,java,inheritance,methods,polymorphism,instance,Java,Inheritance,Methods,Polymorphism,Instance,给定Kickback类和三个子类,它们是Store的子类,Store是Kickback的子类。理解到该类中的Kicker成员持有回扣点,这些回扣点被封装为返回到Person类中的dummy。如何使回扣子类中的回扣成员在三个加油站之间可转移。换言之,我如何设置回扣中的回扣者和个人的封装成员点数,在神圣访问的变化后保持85分,在76次访问获得125分后保持210分?下面的代码是回扣类、Person对象和上述加油站。任何真诚的帮助都将不胜感激。如果它仍然可能是一个大代码转储,我道歉;我正在尽可能地直截

给定Kickback类和三个子类,它们是Store的子类,Store是Kickback的子类。理解到该类中的Kicker成员持有回扣点,这些回扣点被封装为返回到Person类中的dummy。如何使回扣子类中的回扣成员在三个加油站之间可转移。换言之,我如何设置回扣中的回扣者和个人的封装成员点数,在神圣访问的变化后保持85分,在76次访问获得125分后保持210分?下面的代码是回扣类、Person对象和上述加油站。任何真诚的帮助都将不胜感激。如果它仍然可能是一个大代码转储,我道歉;我正在尽可能地直截了当

回扣

import java.util.*;

public class Kickback{

    public static final int START = 0;
    public static final int REWARD = 50;

    protected Person visitor;
    protected int purchase, kicker;
    protected String name;

    public Kickback(){
    visitor = new Person(purchase,kicker);
    name = "Darin Douglas";
    }

    public double get_points(){
      return kicker += purchase/REWARD;
    }

    public boolean redeem_points(){
    if(kicker < purchase){
         purchase -= kicker;
         zeroKB();
         return true;
    }
    kicker -= purchase;
    return false;
    }
    public double zeroKB(){
    return kicker = START;
    }
}
七十年代:

import java.util.*;
public class SeventySix extends Store{
    public SeventySix(){
    super();
    }
    public void nav(){
    super.init();
    System.out.print(super.toString());
    }
}
Jmart:

import java.util.*;
import java.io.*;
public class Jmart extends Store{
    public static final int PERCENT = 100;
    public Jmart(){
    super();
    }
    public void init(){
    System.out.print("Enter in an amount: ");
    purchase = scan.nextInt();
        get_points();
    super.spend_money();
    System.out.println(super.toString());
    }
    public double get_points(){
        return kicker += purchase/PERCENT;
    }
}
假人:

import java.util.*;
public class Person{
    private int cash, debit, amount, points;  
    public static final int CASH = 1000;
    public static final int CREDIT = 3000;

  public Person(int purchase, int kicker){
    cash = CASH;
    debit = CREDIT;
    amount = purchase;
    points = kicker;
    }
    public boolean use_cash(){
    if(cash < amount){
        amount -=  cash;
        System.out.println("We got " + cash + "cash.\nYour remaining balance is " + amount + "\nPlease try another method of payment.");
        reset_cash();
        return true;
}
        cash -= amount;
    return false;
    }
    public boolean use_card(){
    if(debit < amount){
        System.out.println("Card Declined.\nPlease try another method of payment.");
        return true;
    }
        debit -= amount;
    return false;
    }
    public double reset_cash(){
    return cash = Kickback.START;
    }
}
import java.util.*;
公共阶层人士{
私人int现金、借记、金额、积分;
公共静态最终整数现金=1000;
公共静态最终积分=3000;
公众人士(国际采购、国际踢球者){
现金=现金;
借方=贷方;
金额=购买;
分数=踢球者;
}
公共布尔使用_cash(){
如果(现金<金额){
金额-=现金;
System.out.println(“我们得到了“+现金+”现金。\n您的剩余余额是“+金额+”\n请尝试其他付款方式。”);
重置现金();
返回true;
}
现金-=金额;
返回false;
}
公共布尔使用卡(){
如果(借方<金额){
System.out.println(“卡被拒绝。\n请尝试其他付款方式”);
返回true;
}
借方-=金额;
返回false;
}
公共双重设_现金(){
返回现金=回扣。开始;
}
}

既然你已经发布了你的全部代码,而且代码很长,只需要一个人就可以破译和调试,那么我会让你开始。首先,我知道你创建的回扣类的目的是为回扣卡建模以存储奖励积分。因此,通过创建一个类,您已经创建了一个用户定义的类型。在方法“获取_点”中,将“双重回扣”作为参数传递。参数和变量由与值对应的类型和标识符表示。参数可能是“Kickback myCard”或类似的类型,但在这种情况下,由于您试图修改回扣卡的值,并且您在Kickback类中,因此不需要类型为Kickback的参数。您只需要直接修改名为cardValue的类的私有成员,该成员可能具有double类型。Java不支持运算符重载。你不能只做回扣++。因此,在声明私有成员时,请声明一个名为myCardValue的属性:

    double myCardValue;
因此,与其这样做

    Kickback += purchase*REWARD; 
您需要修改myCardValue成员:

    myCardValue += purchase*REWARD. 
注意:扫描器不应该是回扣的成员,这些常量也不应该是回扣的成员。这些常量应该在程序的类之外声明和初始化。它们是公共的,因此所有班级都可以访问它们

假设您希望在其他类中使用此成员,则必须提供与回扣类的myCardValue成员交互的getter和setter方法(也称为accessor和mutator方法)。前

    public static double getKickBackCardVal(){
        return myCardValue;
    }
请记住,回扣是一种类型/对象。在Person类中,Person应该具有一个属性,该属性是回扣类实例的声明:

    Kickback myCard;

因为我假设在你的世界里,你想要一张回扣卡。希望这有帮助。对于如此冗长复杂的解释,我深表歉意,但您已经发布了整个代码以进行调试,从代码中可以看出,您需要更好地理解类和对象,以及它们是如何创建和交互的。

阅读命名约定。它使我们所有人的痛苦都大大减轻了,而且也减轻了格式的痛苦。代码转储很困难。我确实缩短了很多。怎么还是太长了?非常感谢你昨天的首发。我设法创建了一个Kickback对象,它将指向Kickback类的所有成员。我有一种感觉,回扣课现在正在做它的工作。现在,这是一个修改它的问题,这样我就不必将现金、借方和贷方成员传递到存储中。尽管如此,设置它使存储方法在所有加油站都有效,并在适当的情况下覆盖。在你的帮助下,我修改了昨天的代码。
    Kickback myCard;