当前位置: 首页 > 知识库问答 >
问题:

如何将一个类中变量的值用于另一个类?

宋丰
2023-03-14

我在classAccount中定义了一个变量draw。它可以很好地执行Account类中定义的提款功能。但是,我希望访问Sav\u acct类中存在的函数interest中的变量值。它将收回的值取为0。如何使用兴趣函数中的函数中的函数的值,以便执行正确的数学运算?

导入java。util。扫描仪;

类别帐户{

String customer_name;
int account_number;
String type_account;
int balance=2500;
double deposit;

双重撤回;

          void deposit(){
              Scanner sc=new Scanner(System.in);
              System.out.println("how much do you want to deposit?");
              int amo=sc.nextInt();
 deposit= balance+amo;
 
 System.out.println("Your current balance is "+ deposit);

}

作废取款(){

扫描仪sc=新扫描仪(系统英寸);

系统出来println(“您想提取多少?”);

int amo=sc.nextInt();

    withdraw=balance-amo;
               
            

}

}

类Curr\u acct扩展帐户{

空语句

void penalty(){
  
     
       
   
       if(withdraw<2000&& withdraw>0){
      double Service_charge=withdraw-100;
       double falling= Service_charge;
     System.out.println("Your balance is "+withdraw);
       System.out.println("You've been charged a service charge"+" 100" +" due to a below the limit balance");
       System.out.println("Your current amount is "+ falling);
   }
       else if(withdraw<=0){
           System.out.println("Your balance is insufficient");
       }
       else{
           System.out.println("Your current balance is "+ withdraw);
       }
  

}

}

class Sav_acct extends Account{
    
        void interest(){
            if(withdraw<0){
                  System.out.println("Your balance is insufficient");
              }
            else{
            double interests;
          
  interests=(1/100)*withdraw;
  double total_amount=interests+withdraw;
  System.out.println("Your new balance with interest is "+total_amount);
            }

}

}

公共类发布{

空语句

公共静态void main(字符串[]参数){

扫描仪sc=新扫描仪(系统英寸);

系统出来println(“输入您的姓名”);

    String n=sc.nextLine();
    
    System.out.println("Enter your account type: Savings Account or Current Account");
    String t=sc.nextLine();
    
    if("Savings Account".equals(t)){
        Sav_acct ac =new Sav_acct();
        System.out.println("Do you want to deposit or withdraw amount?");
        String d=sc.nextLine();
        if("deposit".equals(d)){
            
            
            ac.deposit();
        }
        else if("withdraw".equals(d)){
            
            
            ac.withdrawl();
            
            ac.interest();
                    
                    }
        }

   
    else if("Current Account".equals(t)){
         Curr_acct ac =new Curr_acct();
        System.out.println("Do you want to deposit or withdraw amount?");
        String d=sc.nextLine();
        if("deposit".equals(d)){
            
           
            ac.deposit();
        }
        else if("withdraw".equals(d)){
            
            
            ac.withdrawl();
            
           
                   
                    ac.penalty();
                 
        
           
        }
    }
    else{
        
        System.out.println("please enter the correct account type as per the options provided on the screen");
        
    }
    
   
    
}
}

共有1个答案

江飞白
2023-03-14

不要在变量中使用public static来访问它。使用getter访问类的变量。这是正确的做法。

在您的情况下,删除公共静态会很好;在帐户类中

public static double withdraw; 

to 

double withdraw;

在为帐户Sav_acct类创建对象时,您不会维护任何状态。您正在创建两个不同的对象来完成一项工作。您永远不会在Sav_acct中获取帐户撤回值,因为两者都是不同的对象。

在为帐户Sav_acct类创建对象时,您没有维护任何状态。您在这里创建了两个不同的对象。您永远不会在Sav_acct中获得帐户撤回值,因为两者是不同的对象。此外,您还缺少OOPS中继承的基础知识

由于Sav\u acct是对Account类的扩展,它继承了Account类的所有属性,因此无需创建Account类的对象。相反,创建一个Sav\u acct对象,并使用此对象执行操作;

Account wi = new Account();
wi.withdrawl();             
Sav_acct in = new Sav_acct();
in.interest();

Sav_acct wi = new Sav_acct();
wi.withdrawl();
wi.interest();

您需要了解继承在OOPS中是如何工作的。请参阅此处

您可以在需要时多次声明对象。例如:-

System.out.println("Enter your account type: Savings Account or Current Account");
String t = sc.nextLine();
if ("Savings Account".equals(t)) {
    System.out.println("Do you want to deposit or withdraw amount?");
    String d = sc.nextLine();
    if ("deposit".equals(d)) {
        Account de = new Account();        // creating Account object  
        de.deposit();
    }
    else if ("withdraw".equals(d)) {
        Account wi = new Account();   // creating Account object  again
        wi.withdrawl();
        Sav_acct in = new Sav_acct();
        in.interest();
    }
}

在上文中,为什么创建帐户de=新帐户() 分别用于存款和取款,只需在获取帐户类型名称后声明一个对象,并使用它执行各自的工作。

System.out.println("Enter your account type: Savings Account or Current Account");
String t = sc.nextLine();
if ("Savings Account".equals(t)) {

    Sav_acct acc = new Sav_acct(); //creating sav_acct object here and use 
    
    System.out.println("Do you want to deposit or withdraw amount?");
    String d = sc.nextLine();
    if ("deposit".equals(d)) {
        // Account de = new Account(); no need
        acc.deposit();
    }
    else if ("withdraw".equals(d)) {
        //Account wi = new Account(); no need
        acc.withdrawl();
        //Sav_acct in = new Sav_acct(); no need again
        acc.interest();
    }
}

在main方法中重新设计您的代码,否则大部分事情都很好

 类似资料:
  • 当我在类中声明/初始化变量时(setter和getter)。如何从另一个类更改此值

  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 我有一个类Main(它具有公共静态void Main(String[]args))和另一个类MyDocument。 Main类中存在一个变量,我想从MyDocument类中的函数alphabetOccurrence()访问该变量。我该怎么做呢?我不想用它作为静态变量。任何修改只能在函数中进行,其余的代码应该保持不变。

  • 问题内容: 我有类似的东西: 现在,我想用另一个JSON结构值替换“我的英语标题” 。 我尝试了: 但这是行不通的。任何人都可以给我提示如何在JSON变量中获取JSON值? 编辑:这是使用Jquery的上下文菜单,但是我在下面的所有解决方案中都遇到了问题,这是时候传递分隔符的字符串了。它不显示分隔符,因为它将字符串而不是仅字符串传递给对象。 例: 问题答案: 解决您的修改。尝试以下

  • 我是java新手,我不知道如何从另一个类访问变量 我正在尝试编写一个代码来发送带有未存储在本地的附件的邮件。我想访问SendMail类中ExcelFile类中编写的变量 如何在另一个类中访问excelFileAsByte并发送邮件而不将其存储在本地。我可以使用addBodyPart和ByteArrayResource将文件添加为附件吗。

  • 我正在做一个新的项目,我试图建立一个货币系统,在那里我可以提取它,以转移到另一个变量(在另一个类)。我在解决这个问题上遇到了一些问题,我对如何编写代码感到非常失望。下面是我想链接的类(我想让“coinsamount”在我做/存款时进入类2“amount” 第2类: