BlueJ 错误“'Void' 此处不允许键入”
BlueJ Error "'Void' Type Not Allowed Here"
我正在制作一个银行账户程序。它必须包含有关余额、帐户所有者姓名和帐号的信息。它还必须能够取款和存款、查询余额等。它还必须收取 10 美元的费用。我试图编写这个程序,但是当我 运行 它时,BlueJ 说“'void' 此处不允许键入”。请帮忙。下面是我的程序。
public class BankAccount
{
private double balance;
private String name;
private long accountNum;
public BankAccount(double initialBal, String owner, long number)
{
balance = initialBal;
name = owner;
accountNum = number;
}
public void withdraw(double amount)
{
if (balance >= amount)
balance -= amount;
else
System.out.println("Insufficient funds");
}
public void deposit(double amount)
{
balance += amount;
}
public double getBalance()
{
return balance;
}
public void chargeFee()
{
balance-=10;
}
public void changeName (String newName)
{
}
}
public class ManageAccounts
{
public static void main(String[] args)
{
BankAccount acct1, acct2;
acct1 = new BankAccount(1000, "Sam", 1111); //creates a new account
acct2 = new BankAccount(500, "Alex", 2222); //creates a new account
acct2.deposit(100); //deposits 0 into Sam's account
System.out.println("Alex's balance is: " + acct2.getBalance()); //prints balance
acct1.withdraw(50); //withdraws from Alex's account
System.out.println("Sam's balance is: " + acct1.getBalance());
System.out.println("Sam's balance is: " + acct1.chargeFee());
System.out.println("Alex's balance is: " + acct2.chargeFee());
acct2.changeName("Alexander"); //changes Alex's name to Alexander
System.out.println( acct1 );
System.out.println( acct2 );
}
}
这是因为您在这些行上调用方法:changeFee():
System.out.println("Sam's balance is: " + acct1.chargeFee());
System.out.println("Alex's balance is: " + acct2.chargeFee());
并且您正在连接一个字符串,在第一种情况下 "Sam's balance is: " 具有 void 类型,因为方法 chargeFee() 不 return 任何东西(void),这是不允许的。所以如果这是你想要的,这可能是一个快速修复:
public String chargeFee()
{
return String.valueOf(balance-=10);
}
编译它,运行它,你得到:
Alex's balance is: 600.0
Sam's balance is: 950.0
Sam's balance is: 940.0
Alex's balance is: 590.0
BankAccount@677327b6
BankAccount@14ae5a5
我还看到您没有应用某些编码约定:http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
习惯一些良好的编码习惯是件好事。
另外,方法更改 changeName() 没有做任何事情,您可以这样更改它:
public void changeName (String newName)
{
name= newName;
}
最后,当您这样做时:
System.out.println( acct1 );
您正在调用对象 acct1 上的 toString() 方法。请参阅:How to use the toString method in Java? 以获得更好的解释。但关键是您没有打印账户持有人的姓名。为此,您可以创建以下方法:
public String getName(){
return name;
}
最后修改你最后的陈述:
System.out.println( acct1.getName());
System.out.println( acct2.getName());
这些报表将打印帐户持有人的姓名。
我正在制作一个银行账户程序。它必须包含有关余额、帐户所有者姓名和帐号的信息。它还必须能够取款和存款、查询余额等。它还必须收取 10 美元的费用。我试图编写这个程序,但是当我 运行 它时,BlueJ 说“'void' 此处不允许键入”。请帮忙。下面是我的程序。
public class BankAccount
{
private double balance;
private String name;
private long accountNum;
public BankAccount(double initialBal, String owner, long number)
{
balance = initialBal;
name = owner;
accountNum = number;
}
public void withdraw(double amount)
{
if (balance >= amount)
balance -= amount;
else
System.out.println("Insufficient funds");
}
public void deposit(double amount)
{
balance += amount;
}
public double getBalance()
{
return balance;
}
public void chargeFee()
{
balance-=10;
}
public void changeName (String newName)
{
}
}
public class ManageAccounts
{
public static void main(String[] args)
{
BankAccount acct1, acct2;
acct1 = new BankAccount(1000, "Sam", 1111); //creates a new account
acct2 = new BankAccount(500, "Alex", 2222); //creates a new account
acct2.deposit(100); //deposits 0 into Sam's account
System.out.println("Alex's balance is: " + acct2.getBalance()); //prints balance
acct1.withdraw(50); //withdraws from Alex's account
System.out.println("Sam's balance is: " + acct1.getBalance());
System.out.println("Sam's balance is: " + acct1.chargeFee());
System.out.println("Alex's balance is: " + acct2.chargeFee());
acct2.changeName("Alexander"); //changes Alex's name to Alexander
System.out.println( acct1 );
System.out.println( acct2 );
}
}
这是因为您在这些行上调用方法:changeFee():
System.out.println("Sam's balance is: " + acct1.chargeFee());
System.out.println("Alex's balance is: " + acct2.chargeFee());
并且您正在连接一个字符串,在第一种情况下 "Sam's balance is: " 具有 void 类型,因为方法 chargeFee() 不 return 任何东西(void),这是不允许的。所以如果这是你想要的,这可能是一个快速修复:
public String chargeFee()
{
return String.valueOf(balance-=10);
}
编译它,运行它,你得到:
Alex's balance is: 600.0
Sam's balance is: 950.0
Sam's balance is: 940.0
Alex's balance is: 590.0
BankAccount@677327b6
BankAccount@14ae5a5
我还看到您没有应用某些编码约定:http://www.oracle.com/technetwork/java/codeconvtoc-136057.html 习惯一些良好的编码习惯是件好事。
另外,方法更改 changeName() 没有做任何事情,您可以这样更改它:
public void changeName (String newName)
{
name= newName;
}
最后,当您这样做时:
System.out.println( acct1 );
您正在调用对象 acct1 上的 toString() 方法。请参阅:How to use the toString method in Java? 以获得更好的解释。但关键是您没有打印账户持有人的姓名。为此,您可以创建以下方法:
public String getName(){
return name;
}
最后修改你最后的陈述:
System.out.println( acct1.getName());
System.out.println( acct2.getName());
这些报表将打印帐户持有人的姓名。