我正在制作一个银行帐户程序。 它必须包含有关余额,帐户所有者的名称和帐号的信息。 它还必须能够提取和存入资金,检查余额等。它还必须收取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 $100 into Sam's account

System.out.println("Alex's balance is:" + acct2.getBalance()); //prints     balance

acct1.withdraw(50); //withdraws $50 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 );

}

}

它在哪里说呢?

@Stultuske编译时。

通常,这意味着您将参数传递给该参数,并且该参数用作将被存储,操作或用作输出的输入值。 但是,如果您通过返回类型为void的方法调用传递:int b = 5 + thisMethodReturnsVoid(); 会有这个问题,因为该方法不会返回可以加到5的值

不是何时,何地。 您的代码的哪一行?

@Stultuske在System.out.println(" Sam余额为:" + acct1.chargeFee());

这个问题在我之前的回复中得到了解释。 chargeFee()不会返回可以连接到该String的值,因此,您会遇到问题

添加一个getBalance()方法,返回其中的余额值,然后在其中调用该方法,而不是chargeFee()

@Stultuske非常感谢。:)

这是因为您在这些行上调用方法:changeFee():

System.out.println("Sam's balance is:" + acct1.chargeFee());

System.out.println("Alex's balance is:" + acct2.chargeFee());

并且您要连接一个字符串,在第一种情况下," Sam的余额为:"具有空类型,因为chargeFee()方法不返回任何内容(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

习惯一些良好的编码习惯是一件好事。

同样,方法change changeName()没有执行任何操作,您可以像这样更改它:

public void changeName (String newName)

{

name= newName;

}

最后,当您这样做时:

System.out.println( acct1 );

您正在调用对象acct1上的toString()方法。参见:如何在Java中使用toString方法?以获得更好的解释。但要点是,您不是要打印帐户持有人的姓名。为此,您可以创建以下方法:

public String getName(){

return name;

}

最后修改您的最后一条语句:

System.out.println( acct1.getName());

System.out.println( acct2.getName());

这些语句将打印帐户持有者的姓名。

谢谢您的帮助

乐意效劳 :)

java此处不允许使用void_关于java:BlueJ错误“此处不允许’无效’类型”相关推荐

  1. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  2. Java多线程干货系列—(一)Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  3. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

  4. Java GC系列(2):Java垃圾回收是如何工作的

    转载自   Java GC系列(2):Java垃圾回收是如何工作的 本教程是为了理解基本的Java垃圾回收以及它是如何工作的.这是垃圾回收教程系列的第二部分.希望你已经读过了第一部分:<Java ...

  5. java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能

    java第三阶段源代码 那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 . jbloch / effective-java-3e-source-code项目拥 ...

  6. java使用缓冲区读取文件_在Java中使用Google的协议缓冲区

    java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...

  7. java ee maven_真正释放Maven和Java EE的强大功能

    java ee maven 如果野心和愿景太复杂而无法使用,则它们可能会淘汰伟大的解决方案. 尽管Maven和Java EE是在整个Java行业中都已建立的良好技术,但是使用它们并使用其作者打算使用的 ...

  8. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

  9. Java 11:JOIN表,获取Java流

    是否曾经想过如何将联接的数据库表转换为Java Stream? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将从Java 8示例开始,然后研究Java 11 ...

最新文章

  1. Replication主要配置项
  2. python的用途实例-三个实例带你了解生成器的作用
  3. JBoss4.2.3部署SSH2
  4. js div加载html_说说 Vue.js 中的 v-cloak 指令
  5. 怎么绘制机械孔_机械制图中常用的图纸简化画法,相当适合初学者!
  6. android传感器博客,Android实现接近传感器
  7. 作者:宋长青,山东农业大学教授,农业大数据研究中心常务副主任。
  8. 新版易支付源码支持即时到账功能
  9. 漫步凸分析一——仿射集
  10. RBF非线性滤波的Matlab,基于RBF神经网络的非线性滤波器的研究
  11. C#中使用GUID的笔记
  12. 【兰伯特光照与Blinn_Phong光照】
  13. 修改Linux窗口大小
  14. 数学女孩-伽罗瓦理论读书笔记尺规作图
  15. cad字体安装_1.1.2 CAD篇之字体库设置
  16. sgu-244 Height, Bisector and Median
  17. Openstack rocky 部署四: neutron 部署与验证(控制节点)
  18. Error: unable to perform an operation on node ‘rabbit@rabbitma‘ please see diamostics infoxmation
  19. HDU2188——悼念512汶川大地震遇难同胞——选拔志愿者(Bash Game巴士博弈)(我去,名字肿么这么长)
  20. 我的几个提升工作效率的小软件(持续更新中...)

热门文章

  1. 共享售货机取代人工是便利店的天生优势
  2. SendMessage、PostMessage 2021-01-07
  3. 20个ABAQUS复合材料案例等你来get!
  4. VSCode+Evernote+markdown
  5. Mac如何清理DNS缓存
  6. swif 4.0 网络解析 demo
  7. ArcScene三维漫游
  8. SVN steal lock
  9. 计算机存储器与存储结构
  10. UltraISO制作启动盘及提取U盘为ISO镜像