这个程序经常出错在编译器中获得日期后,错误会提示,我不确定如何修复它

6yjfywim  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(277)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

上个月关门了。
改进这个问题
这就是我要做的任务
设计名为account的类,该类包含:
帐户的名为id的私有int数据字段(默认值为0)。
帐户的名为balance的专用双精度数据字段(默认值为0)。
名为annualInterestate的私有双数据字段,用于存储当前利率(默认值为0)。假设所有账户的利率相同。
名为datecreated的私有日期数据字段,用于存储创建帐户的日期。
创建默认帐户的无参数构造函数。
创建具有指定id和初始余额的帐户的构造函数。
id、balance和annualinterestrate的访问器和变异器方法。
datecreated的访问器方法。
一个名为getMonthlyInterestate()的方法,返回月利率。
一个名为getmonthlyinterest()的方法,返回每月利息。
从帐户中提取指定金额的取款方法。
一种名为deposit的方法,它将指定的金额存入帐户。
实现类(提示:getmonthlyinterest()方法是返回月利息,而不是利率。月利息是余额*月利息。月利率为年利率/12。请注意,AnnualInterestate是一个百分比,例如4.5%。你需要把它除以100。)
编写一个测试程序,创建一个帐户对象,帐户id为1122,余额为20000美元,年利率为4.5%。使用以下事务处理(负值表示取款,正值表示存款)。我想查看存储在文件中的事务。

-100.00
250.00
650.00
-25.00
10.00
-50.00
-60.00
-80.00
100.00

打印余额、月利息和创建此帐户的日期。根据月末的期末余额计算利息,你应该把利息计入你的期末余额。
到目前为止,我所做的如下所列。任何帮助都将不胜感激。错误列在代码后面作为注解。以下是我目前的情况:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Date;
import java.util.Scanner;

//Account
class Account
{
//variables
private int id;
private double balance;
private double annualInterest;
private Date dateCreated;

 //default constuctor
Account(){}

//constructor
Account(int i,double bal){
this.id=i;
this.balance=bal;
}
//set Id
public void setId(int i)
{
this.id=i;
}
//set Balance
public void setBalance(double bal)
{
this.balance=bal;
}
//set InterestRate
public void setInterestRate(double rate)
{
this.annualInterest=rate;
}

//get ID
public int getId()
{
return id;
}
//get Balance
public double getBalance()
{
return balance;
}
 //get InterestRate(
public double getInterestRate()
{
return annualInterest;
}
//get Date
public Date getDate()
{
dateCreated=new Date();
return dateCreated;
}
//get MonthlyInterestRate
public double getMonthlyInterestRate()
{
double monthlyInterest=getMonthlyInterest();
return balance*monthlyInterest;
}
//get MonthlyInterest
public double getMonthlyInterest()
{
return (annualInterest/1200);
}
//withdraw
public void withdraw(double amt)
{
this.balance=balance-amt;
}
//deposit
public void deposit(double amt)
{
this.balance=balance+amt;
}
}
//main method
public class AccountDriver {

public static void main(String[] args) throws FileNotFoundException {

//set account id, balance 
Account at=new Account(1122,20000);

//set InterestRate
at.setInterestRate(4.5);

System.out.println("ID: "+at.getId());
System.out.println("Balance: "+at.getBalance());
System.out.println("Interest: "+at.getInterestRate());
System.out.println("Date: "+at.getDate().toString());

//transaction
Scanner sc=new Scanner(new File("c:\\books\\trans.txt"));

while(sc.hasNext())
{
int amt=sc.nextInt();
if(amt<0)
at.withdraw(amt);
else
at.deposit(amt);
}
//print balance
System.out.println("Balance After Trasaction: ");
System.out.println("Balance: "+at.getBalance());
System.out.println("Interest Rate: "+at.getMonthlyInterestRate());

}

}

//The error I keep receiving is below. 
//Exception in thread "main" java.util.InputMismatchException
//at java.base/java.util.Scanner.throwFor(Scanner.java:939)
//at java.base/java.util.Scanner.next(Scanner.java:1594)
//at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
//at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
//at Personal_Projects.AccountDriver.main(AccountDriver.java:107)
nr7wwzry

nr7wwzry1#

您正在读取文件“c:\books\trans.txt”中的数据。
根据你的密码,

while(sc.hasNext()) {
     int amt=sc.nextInt();
     if(amt<0)
        at.withdraw(amt);
     else
        at.deposit(amt);
}

您只从文件中读取整数,这意味着文件应该是这样的

1
2
3
4

以此类推,没有任何字符串或逗号或任何东西,如果有任何其他字符串或逗号它将抛出异常。您可以通过在while循环中使用sc.hasnextint()来解决此错误。

解决方案

while(sc.hasNextInt()) {
     int amt=sc.nextInt();
     if(amt<0)
        at.withdraw(amt);
     else
        at.deposit(amt);
}

相关问题