java - 尝试用另一种方法要求用户输入

标签 java file input

我试图要求用户在“doDeposit”方法中进行输入,并检查输入的 ID 是否与文件中的 ID 匹配,但是在尝试使用扫描程序时收到错误“at java.util.Scanner. throwFor(Unknown Source)”。

我的程序读取的文件具有以下数据:

Brain Adams,51,B10000,3000.5,1
John Waterson,30,B10001,4000.34,0
John Key,61,B10002,56666600,2
Julia Roberts,28,B10003,454545,1,
Tom Cruise,27,B10004,340000000,1
Johnny Tom,54,B10005,230,0
Joe Haldeman,66,B10006,23055.5,0
Charles King,55,B10007,2400.5,0
James Thomson,44,B10008,330.5,0
Cameron Diaz,28,B10009,23000000.6,1
Barak Obama,84,B10010,2000000.4,2
Dustin Hoffman,37,B10011,23000000,1
Robin Williams,72,B10012,22000000.5,1
Russell Crowe,47,B10013,44000000.3,1
Kylie Minogue,28,B10014,10000000.3,1
Paul Keating,41,B10015,4000000.8,2
Lady Gaga,32,B10016,50000000,1
Helen Clark,502,B10017,400000,2
Mikhail Suzenski,32,B10018,0.0,0
Boris Yeltsin,21,B10019,10000000.5,2

我的代码:

    package assignment;

    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;
    import static java.lang.System.out;

    public class Assignment
    {
    public static void main(String[] args)
    {
    try
    {
        new 
    BankAccountApp("C:/Users/USER/workspace/assignment/data/AssignmentData");
}
    catch (IOException ioe)
{
        out.printf("Missing file: %sC:/Users/USER/workspace/assignment/data/AssignmentData? \n\n",
                new Assignment().getClass().getPackage().getName());
}
}
}
class BankAccountApp
{
    private List<BankAccount> accounts;
    public BankAccountApp(String filename) throws IOException
{
        readAccountData(filename);
        displayMenu();
        int opt = 0;
        try (Scanner input = new Scanner(System.in))
{
            while (true)
{
                out.print("\nSelect an option: ");
                opt = input.nextInt();// format exception if string
                if (opt < 0 || opt > 7)
                    out.println("Invalid. Must be 1 - 7 (or 0 for menu).");
                else
                    break;
}
}
        switch (opt)
{
        case 0: displayMenu(); break;
        case 1: doDeposit(); break;
        case 2: doWithdraw(); break;
        case 3: displayHighestBalanceAccount(); break;
        case 4: displayMostActiveAccount(); break;
        case 5: displayAllAccounts("C:/Users/USER/workspace/assignment/data/AssignmentData"); break;
        case 6:
{
    int total = getTotalTransactions(accounts);
    out.println("Total transactions: " + total);
    break;
}
case 7: farewell(); return;
}
}
    public void readAccountData(String fn) throws IOException
{
            accounts = new LinkedList<>();
            Path path = new File("C:/Users/USER/workspace/assignment/data/AssignmentData").toPath();
            List<String> content = Files.readAllLines(path);
            for(String line : content){
                String[] items = line.split(",");
                String name = items[0];
                int age = Integer.valueOf(items[1]);
                String accountID = items[2];
                double balance = Double.valueOf(items[3]);
                int accountType = Integer.valueOf(items[4]);
                BankAccount b = new BankAccount(name, age, accountID, balance, accountType);
                accounts.add(b);
            }
        }

    public void displayAllAccounts(String fn) throws IOException
{
        accounts = new LinkedList<BankAccount>();
        Path path = new File(fn).toPath();
        List<String> content = Files.readAllLines(path);
        for(String line : content){
            String[] items = line.split(",");
            String name = items[0];
            int age = Integer.valueOf(items[1]);
            String accountID = items[2];
            double balance = Double.valueOf(items[3]);
            int accountType = Integer.valueOf(items[4]);
            BankAccount b = new BankAccount(name, age, accountID, balance, accountType);
            accounts.add(b);
            out.printf("---All Bank Accounts---\n");
            out.println("Name: "+name);
            out.println("Age: "+age);
            out.println("Account ID: "+accountID);
            out.printf("Account Balance: %f",balance);
            out.println("\nAccount Type: "+accountType+"\n");
        }
        return;
}
    public void displayHighestBalanceAccount()
    {
        BankAccount mostMoney = accounts.get(3);
        for(BankAccount b : accounts){
            if(mostMoney.getbalance() < b.getbalance()){
                mostMoney = b;
            }
        }
        String name = mostMoney.getname();
        int age = mostMoney.getage();
        String accountID = mostMoney.getaccountID();
        double balance = mostMoney.getbalance();
        int accountType = mostMoney.accountType();
        out.printf("---Bank account with the highest balance---\n");
        out.println("Name: "+name);
        out.println("Age: "+age);
        out.println("Account ID: "+accountID);
        out.printf("Account Balance: %f",balance);
        out.println("\nAccount Type: "+accountType);
    }
    public void displayMostActiveAccount()
{

}
    public int getTotalTransactions(List<BankAccount> list)
{
    return 0;
}
    public void doDeposit()
{
        out.print("Enter an account ID for deposit: ");
}
    public void doWithdraw()
{
}
    public void farewell()
{
        out.println("Thanks for using the service. Bye!");
}
    public void displayMenu()
{
        out.println("*********************************");
        out.println("* Bank Account Operation Menu *");
        out.println("***********************************\n");
        out.println("0. Display Menu");
        out.println("1. Deposit");
        out.println("2. Withdraw");
        out.println("3. Display Highest Balance Account");
        out.println("4. Display Most Active Account");
        out.println("5. Display All Accounts");
        out.println("6. Display Total Number of Transactions");
        out.println("7. Exit");
}
}
class BankAccount1 extends Person1
{
    private String accountID;
    private double balance;
    private int accountType;
    public String getaccountID() {
        return accountID;
    }

    public void setaccountID(String accountID) {
        this.accountID = accountID;
    }

    public double getbalance() {
        return balance;
    }

    public void setbalance(double balance) {
        this.balance = balance;
    }

    public int accountType() {
        return accountType;
    }

    public void setaccountType(int accountType) {
        this.accountType = accountType;
    }
    public BankAccount1(String name, int age, String accountID, double balance, int accountType)
    {
        super(name, age);
        this.accountID = accountID;
        this.balance = balance;
        this.accountType = accountType;
    }
}
class Person1 {
    private String name;
    private int age;
    public String getname() {
        return name;
    }
    public void setname(String name) {
        this.name = name;
    }
    public int getage() {
        return age;
    }
    public void setage(int age) {
        this.age = age;
    }
    public Person1(String name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

非常感谢任何指点。

最佳答案

我运行了你的代码。我发现两个错误。

  1. 您有一个 BankAccount1 类,并且 You 指的是 BankAccount。没有“1”。
  2. 您使用了错误的路径 查看你的路径是

    C:/Users/USER/workspace/assignment/data/AssignmentData

但是路径应该如下所示

   C:\\Users\\Menuka\\IdeaProjects\\JavaTest\\src\\AssignmentData`

我将在下面发布完整的代码。

https://gist.github.com/Menuka5/2af4d16dccbdf780d730fd8bf5ce4e56

关于java - 尝试用另一种方法要求用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691564/

相关文章:

input - Common Lisp 中的控制台 I/O

java - 如何从公历字符串中获取日期?

java - 是否可以通过编程方式将 apk 从 google play 下载到 PC?

java - 为什么我们需要一个临时变量来从链表中删除节点?

file - NTFS $MFT 文件可以有子记录吗?

c - C 控制台底部的输入栏

Java Swing getSize() 返回不准确的值?

java - 如何读取/写入jar中的文件

java - 如何从包中读取文件 - 类似于 Java 中的资源包

html - Microsoft Edge 中的切换显示