英文:
Java compiler returning error: cannot find symbol even though the symbol is defined
问题
以下是翻译好的部分:
我是 Java 的新手,仍在努力学习基础知识,我猜我可能犯了一个非常简单的错误。我试图创建一个代码,其中两个 SavingsAccount 类的对象会按月增加利息。这是我编写的代码:
class SavingsAccount {
// 主函数
public static void main(String args[]) {
SavingsAccount saver1 = new SavingsAccount(2000.0);
SavingsAccount saver2 = new SavingsAccount(3000.0);
SavingsAccount.modifyInterestRate(0.04f);
System.out.println("S1: " + saver1);
System.out.println("S2: " + saver2);
SavingsAccount.modifyInterestRate(0.05f);
System.out.println("S1: " + saver1);
System.out.println("S2: " + saver2);
}
// 主函数结束
static double annualInterestRate;
private double savingsBalance;
public SavingsAccount(double balance) {
savingsBalance = balance;
}
public double calculateMonthlyInterest() {
return (savingsBalance * annualInterestRate) / 12;
}
public static void modifyInterestRate(double rate) {
annualInterestRate = rate;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public double getSavingsBalance() {
return savingsBalance;
}
}
当我尝试运行代码时,出现以下错误:
SavingsAccount.java:29: error: cannot find symbol
SavingsAccount saver1 = new SavingsAccount(2000.0);
^
symbol: class SavingsAccount
location: class SavingsAccount
SavingsAccount.java:29: error: cannot find symbol
SavingsAccount saver1 = new SavingsAccount(2000.0);
^
symbol: class SavingsAccount
location: class SavingsAccount
SavingsAccount.java:30: error: cannot find symbol
SavingsAccount saver2 = new SavingsAccount(3000.0);
^
symbol: class SavingsAccount
location: class SavingsAccount
SavingsAccount.java:30: error: cannot find symbol
SavingsAccount saver2 = new SavingsAccount(3000.0);
^
symbol: class SavingsAccount
location: class SavingsAccount
SavingsAccount.java:31: error: cannot find symbol
SavingsAccount.modifyInterestRate(0.04f);
^
symbol: variable SavingsAccount
location: class SavingsAccount
SavingsAccount.java:36: error: cannot find symbol
SavingsAccount.modifyInterestRate(0.05f);
^
symbol: variable SavingsAccount
location: class SavingsAccount
6 errors
如果有人能帮助我解决这个问题,我将非常感激。谢谢!
英文:
I am new to java and I am still trying to learn the basics, I'm guessing I've probably made a very simple error. I am trying to create a code where two objects of the class savingsAccount are incremented by a monthly interest. Here is the code that I wrote:
class SavingsAccount {
//main
public static void main(String args[]){
savingsAccount saver1 = new savingsAccount(2000.0);
savingsAccount saver2 = new savingsAccount(3000.0);
savingsAccount.modifyAnnualInterestRate(0.04f);
System.out.println("S1: " + saver1);
System.out.println("S2: " + saver2);
savingsAccount.modifyAnnualInterestRate(0.05f);
System.out.println("S1: " + saver1);
System.out.println("S2: " + saver2);
}
//end main
static double annualInterestRate;
private double savingsBalance;
public void savingsAccount(double balance){
savingsBalance = balance;
}
public double calculateMonthlyInterest(){
return (savingsBalance * annualInterestRate)/12;
}
public static void modifyInterestRate(double rate){
annualInterestRate = rate;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
public double getSavingsBalance(){
return savingsBalance;
}
}
When I attempt to run the code, these errors are returned:
SavingsAccount.java:29: error: cannot find symbol
savingsAccount saver1 = new savingsAccount(2000.0);
^
symbol: class savingsAccount
location: class SavingsAccount
SavingsAccount.java:29: error: cannot find symbol
savingsAccount saver1 = new savingsAccount(2000.0);
^
symbol: class savingsAccount
location: class SavingsAccount
SavingsAccount.java:30: error: cannot find symbol
savingsAccount saver2 = new savingsAccount(3000.0);
^
symbol: class savingsAccount
location: class SavingsAccount
SavingsAccount.java:30: error: cannot find symbol
savingsAccount saver2 = new savingsAccount(3000.0);
^
symbol: class savingsAccount
location: class SavingsAccount
SavingsAccount.java:31: error: cannot find symbol
savingsAccount.modifyAnnualInterestRate(0.04f);
^
symbol: variable savingsAccount
location: class SavingsAccount
SavingsAccount.java:36: error: cannot find symbol
savingsAccount.modifyAnnualInterestRate(0.05f);
^
symbol: variable savingsAccount
location: class SavingsAccount
6 errors
If anyone could help me with this, I would be very grateful. Thank you!
答案1
得分: 1
你没有为这个类创建构造函数。
public class SavingsAccount {
//主函数
public static void main(String args[]) {
SavingsAccount saver1 = new SavingsAccount(2000.0);
SavingsAccount saver2 = new SavingsAccount(3000.0);
saver1.modifyInterestRate(0.04f);
saver1.calculateMonthlyInterest();
System.out.println("S1:" + saver1.calculateMonthlyInterest());
System.out.println("S2:" + saver2.calculateMonthlyInterest());
saver1.modifyInterestRate(0.05f);
saver1.calculateMonthlyInterest();
System.out.println("S1:" + saver1.calculateMonthlyInterest());
System.out.println("S2:" + saver2.calculateMonthlyInterest());
}
//结束主函数
private double annualInterestRate;
private double savingsBalance;
//构造函数
public SavingsAccount(double balance) {
savingsBalance = balance;
}
public double calculateMonthlyInterest() {
return (savingsBalance * annualInterestRate) / 12;
}
public void modifyInterestRate(double rate) {
annualInterestRate = rate;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
}
我认为你正在学习面向对象编程。我为你提供了一个更好的示例供你学习。
public class Main {
public static void main(String[] args) {
//为SavingsAccount创建两个实例,并将savingsBalance传递给构造函数
SavingsAccount saver1 = new SavingsAccount(2000.0);
SavingsAccount saver2 = new SavingsAccount(3000.0);
//设置年利率的值
saver1.setAnnualInterestRate(0.5);
saver2.setAnnualInterestRate(0.7);
//计算月利息并打印出来
System.out.println("S1:" + saver1.calculateMonthlyInterest());
System.out.println("S2:" + saver2.calculateMonthlyInterest());
//更改利率
saver1.setAnnualInterestRate(0.1);
saver2.setAnnualInterestRate(0.2);
System.out.println("S1:" + saver1.calculateMonthlyInterest());
System.out.println("S2:" + saver2.calculateMonthlyInterest());
}
//为了更好的结构,创建一个独立的类
static class SavingsAccount {
private double savingsBalance = 0;
private double annualInterestRate = 0;
//构造函数
public SavingsAccount(double savingsBalance) {
this.savingsBalance = savingsBalance;
}
//计算月利息的函数
public double calculateMonthlyInterest() {
return (savingsBalance * annualInterestRate) / 12f;
}
//类值的getter和setter
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}
public double getSavingsBalance() {
return savingsBalance;
}
public void setSavingsBalance(double savingsBalance) {
this.savingsBalance = savingsBalance;
}
}
}
英文:
You didn't create a constructor for the class.
public class SavingsAccount {
//main
public static void main(String args[]){
SavingsAccount saver1 = new SavingsAccount(2000.0);
SavingsAccount saver2 = new SavingsAccount(3000.0);
saver1.modifyInterestRate(0.04f);
saver1.calculateMonthlyInterest();
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
saver1.modifyInterestRate(0.05f);
saver1.calculateMonthlyInterest();
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
}
//end main
private double annualInterestRate;
private double savingsBalance;
//Constructor
public SavingsAccount(double balance){
savingsBalance = balance;
}
public double calculateMonthlyInterest(){
return (savingsBalance * annualInterestRate)/12;
}
public void modifyInterestRate(double rate){
annualInterestRate = rate;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
}
I think you are learning oop. I placed a better example for your study.
public class Main {
public static void main(String[] args) {
//Create two instances for SavingsAccount and pass the savingsBalance to constructor
SavingsAccount saver1 = new SavingsAccount(2000.0);
SavingsAccount saver2 = new SavingsAccount(3000.0);
//Set the value rate of the AnnualInterestRate
saver1.setAnnualInterestRate(0.5);
saver2.setAnnualInterestRate(0.7);
//calculate the Monthly Interest and print it out
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
//Change the rate
saver1.setAnnualInterestRate(0.1);
saver2.setAnnualInterestRate(0.2);
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
}
//Create a separated class for a better structure
static class SavingsAccount {
private double savingsBalance = 0;
private double annualInterestRate = 0;
//Constructor
public SavingsAccount(double savingsBalance){
this.savingsBalance = savingsBalance;
}
//Function for calculat the eMonthly Interest
public double calculateMonthlyInterest(){
return (savingsBalance * annualInterestRate)/12f;
}
//Getter setter for the class value
public double getAnnualInterestRate(){
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate){
this.annualInterestRate = annualInterestRate;
}
public double getSavingsBalance(){
return savingsBalance ;
}
public void setSavingsBalance(double savingsBalance){
this.savingsBalance = savingsBalance;
}
}
}
答案2
得分: 0
class SavingsAccount {
// 主方法
public static void main(String args[]){
SavingsAccount saver1 = new SavingsAccount();
SavingsAccount saver2 = new SavingsAccount();
saver1.savingsAccount(2000.0);
saver2.savingsAccount(3000.0);
SavingsAccount.modifyInterestRate(0.04);
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
SavingsAccount.modifyInterestRate(0.05);
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
}
// 结束主方法
static double annualInterestRate;
private double savingsBalance;
public void savingsAccount(double balance){
savingsBalance = balance;
}
public double calculateMonthlyInterest(){
return (savingsBalance * annualInterestRate)/12;
}
public static void modifyInterestRate(double rate){
annualInterestRate = rate;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
public double getSavingsBalance(){
return savingsBalance;
}
}
英文:
I don't know what you are trying to do but here is your compilable code
class SavingsAccount {
//main
public static void main(String args[]){
SavingsAccount saver1 = new SavingsAccount();
SavingsAccount saver2 = new SavingsAccount();
saver1.savingsAccount(2000.0);
saver2.savingsAccount(3000.0);
SavingsAccount.modifyInterestRate(0.04);
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
SavingsAccount.modifyInterestRate(0.05);
System.out.println("S1: " + saver1.calculateMonthlyInterest());
System.out.println("S2: " + saver2.calculateMonthlyInterest());
}
//end main
static double annualInterestRate;
private double savingsBalance;
public void savingsAccount(double balance){
savingsBalance = balance;
}
public double calculateMonthlyInterest(){
return (savingsBalance * annualInterestRate)/12;
}
public static void modifyInterestRate(double rate){
annualInterestRate = rate;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
public double getSavingsBalance(){
return savingsBalance;
}
}
答案3
得分: 0
你的类名是SavingsAccount,但是当你创建对象实例时,你写成了savingsAccount;
Java是区分大小写的语言,所以你需要将savingsAccount更改为SavingsAccount。
并且你缺少了一个构造函数:
public SavingsAccount(double savingsBalance){
this.savingsBalance = savingsBalance;
}
英文:
Your class name is SavingsAccount, but when you create an object instance, you write savingsAccount;
Java is a case-sensitive language, so you need to change savingsAccount to SavingsAccount
And you are missing a constructor:
public SavingsAccount(double savingsBalance){
this. savingsBalance = savingsBalance;
}
答案4
得分: -1
Java是一种区分大小写的语言。创建对象时,您需要使用与类名相同的名称。在您的情况下,您必须使用
SavingsAccount saver1 = new SavingsAccount(2000.0);
英文:
Java is a Case-sensitive language. When creating objects you need to use the same name as the class name. In your case you have to use
SavingsAccount saver1 = new SavingsAccount(2000.0);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论