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

我收到一个错误,作为非静态变量,无法从静态上下文帐户account1=新帐户(112220000,.045)引用该错误;

雍宇定
2023-03-14

我已经一遍又一遍地写了这个程序,有人能告诉我我缺少了什么吗,看起来这是一个我没有抓住的小错误。

以下是我正在努力实现的目标:

设计一个名为帐户的类,其中包含:

  • 帐户名为id的私有int数据字段(默认值为0)

编写一个测试程序,创建一个帐户对象,帐户ID为1122,余额为20,000美元,年利率为4.5%。使用提取方法提取2,500美元,使用存款方法存入3,000美元并打印余额、每月利息以及创建此帐户的日期。

错误是非静态变量,无法从静态上下文中引用

账户账户1=新账户(1122, 20000, .045);

import java.util.Date;
class assignExam {

public static void main(String[] args) {

Account account1 =  new Account(1122, 20000, .045);
account1.withdraw(2500);
account1.deposit(3000);
java.util.Date dateCreated = new java.util.Date();
System.out.println("Date Created:" + dateCreated);
System.out.println("Account ID:" + account1.id);
System.out.println("Balance:" + account1.getBalance());
System.out.println("Interest Rate:" + account1.getAnnualInterestRate());
System.out.println("Balance after withdraw of 2500:" +       account1.getAnnualInterestRate());
System.out.println("Balance after deposit of 3000:" + account1.getAnnualInterestRate());
System.out.println("Monthly Interest:" + account1.id);

System.out.println("Process completed.");
}

class Account {
//define variables
private int id;
private double balance; // balance for account
private double annualInterestRate; //stores the current interest rate
private Date dateCreated; //stores the date account created

//no arg construtor
Account () {
    id = 0;
    balance = 0.0;
    annualInterestRate = 0.0;
}
//constructor with specific id and initial balance
Account(int newId, double newBalance) {
    id = newId;
    balance = newBalance;
}
Account(int newId, double newBalance, double newAnnualInterestRate) {
    id = newId;
    balance = newBalance;
    annualInterestRate = newAnnualInterestRate;
}
//accessor/mutator methods for id, balance, and annualInterestRate
public int getId() {
    return id;
}
public double getBalance() {
    return balance;
}
public double getAnnualInterestRate() {
    return annualInterestRate;
}
public void setId(int newId) {
    id = newId;
}
public void setBalance(double newBalance) {
    balance = newBalance;
}
public void setAnnualInterestRate(double newAnnualInterestRate) {
    annualInterestRate = newAnnualInterestRate;
}
//accessor method for dateCreated
public void setDateCreated(Date newDateCreated) {
    dateCreated = newDateCreated;
}
//define method getMonthlyInterestRate
double getMonthlyInterestRate() {
    return annualInterestRate/12;
}
//define method withdraw
double withdraw(double amount) {
    return balance -= amount;
}   
//define method deposit
double deposit(double amount) {
    return balance += amount;   
}
}

}

共有2个答案

苏宏逸
2023-03-14

类帐户应为静态

令狐功
2023-03-14

罗伯托的回答是正确的,但有一点背景。

您当前已将帐户声明为assignExam类中的嵌套类。它不是声明为静态的,这意味着要创建该类的实例,还需要创建assignExam的实例。

因此,您可以使用以下命令使类成为静态的:

static class Account {

或者您可以将帐户类移出您的askExam类,这将自动使其成为一个独立的类,因此是静态的,因为它不再嵌套在另一个类中。

 类似资料:
  • 我正在尝试编写一段代码,当我选中两个复选框中的一个复选框时,它将更改我选择按钮时显示的消息。 我收到的错误消息是: "FirstWindow.java:12:错误:不能从静态上下文消息中引用非静态变量消息="good job\n";" 对于第12、37、53、57行。我已尝试在main中声明字符串变量,但我只会收到错误: “FirstWindow。java:38:错误:从内部类引用的局部变量必须是

  • 问题内容: 以下代码在变量上产生了错误,con2说 我用Google搜索解决方案,并且他们暗示尚未初始化该变量以使方法可用。我初始化不正确吗?我也尝试过将事情改为公开,但这也无济于事。 问题答案: 不,实际上,你必须声明con2字段为静态: 编辑:更正,实际上是远远不够的,你将遇到相同的问题,因为getConnection2Url方法也不是静态的。更好的解决方案可能是改为进行以下更改:

  • 我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?

  • 我现在正在编写这段代码,它总是在“教师x1=new Teacher();学生y1=new Student()”部分返回错误“非静态变量this cannot reference from a static context”。我不知道该怎么做才能让这个项目运转起来。谢谢你的帮助! 编辑:添加了其他类编辑2:此代码的目标是有一个类Person(带有姓名,年龄和性别),另一个类学生(带有等级)和教师(带

  • 我尝试使用网络豆IDE在java中创建一个简单的类。每当我试图执行这个命令时,它都会发出这样的警告。从静态上下文引用的非静态变量“。谁能告诉我为什么会发生这种情况以及如何解决它。提前感恩节。

  • 问题内容: 我正在使用Android Studio(测试版),并且在“ onCreateView()”中使用此Java代码时,出现错误。 这是错误: 我该如何解决? 问题答案: 假设您在活动中有一个静态片段内部类:您正在尝试调用活动的活动,而该活动不能在不包含对父级引用的静态内部类中调用。 在其中,您需要在刚膨胀的根视图上调用它,例如