java此处不允许使用void_关于java:BlueJ错误“此处不允许’无效’类型”
我正在制作一个银行帐户程序。 它必须包含有关余额,帐户所有者的名称和帐号的信息。 它还必须能够提取和存入资金,检查余额等。它还必须收取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错误“此处不允许’无效’类型”相关推荐
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- Java多线程干货系列—(一)Java多线程基础
前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...
- java static关键字_好程序员Java教程分享static关键字的理解
好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...
- Java GC系列(2):Java垃圾回收是如何工作的
转载自 Java GC系列(2):Java垃圾回收是如何工作的 本教程是为了理解基本的Java垃圾回收以及它是如何工作的.这是垃圾回收教程系列的第二部分.希望你已经读过了第一部分:<Java ...
- java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能
java第三阶段源代码 那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 . jbloch / effective-java-3e-source-code项目拥 ...
- java使用缓冲区读取文件_在Java中使用Google的协议缓冲区
java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...
- java ee maven_真正释放Maven和Java EE的强大功能
java ee maven 如果野心和愿景太复杂而无法使用,则它们可能会淘汰伟大的解决方案. 尽管Maven和Java EE是在整个Java行业中都已建立的良好技术,但是使用它们并使用其作者打算使用的 ...
- java整数的因式分解_如何在Java中找到整数的质数-因式分解
java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...
- Java 11:JOIN表,获取Java流
是否曾经想过如何将联接的数据库表转换为Java Stream? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将从Java 8示例开始,然后研究Java 11 ...
最新文章
- Replication主要配置项
- python的用途实例-三个实例带你了解生成器的作用
- JBoss4.2.3部署SSH2
- js div加载html_说说 Vue.js 中的 v-cloak 指令
- 怎么绘制机械孔_机械制图中常用的图纸简化画法,相当适合初学者!
- android传感器博客,Android实现接近传感器
- 作者:宋长青,山东农业大学教授,农业大数据研究中心常务副主任。
- 新版易支付源码支持即时到账功能
- 漫步凸分析一——仿射集
- RBF非线性滤波的Matlab,基于RBF神经网络的非线性滤波器的研究
- C#中使用GUID的笔记
- 【兰伯特光照与Blinn_Phong光照】
- 修改Linux窗口大小
- 数学女孩-伽罗瓦理论读书笔记尺规作图
- cad字体安装_1.1.2 CAD篇之字体库设置
- sgu-244 Height, Bisector and Median
- Openstack rocky 部署四: neutron 部署与验证(控制节点)
- Error: unable to perform an operation on node ‘rabbit@rabbitma‘ please see diamostics infoxmation
- HDU2188——悼念512汶川大地震遇难同胞——选拔志愿者(Bash Game巴士博弈)(我去,名字肿么这么长)
- 我的几个提升工作效率的小软件(持续更新中...)