从java读取文件?

时间:2015-01-15 22:16:25

标签: java file

我有一项任务,我必须制作一个简单的银行应用程序。我需要将客户信息存储在具有名字和姓氏,客户ID和余额的文件中。然后,我需要创建一个菜单选项来检查余额,提款,存款和退出。我目前遇到的问题是当用户想要检查余额时试图显示余额。平衡是在我的文件的第四行,我不知道如何只显示第四行,然后能够使用该数字来添加或减去一个数字。我试图在switch语句中的情况1中执行此操作。任何提示都将不胜感激。

import java.util.Scanner;
import java.text.DecimalFormat;
import java.io.*;
public class bank {

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


        String fileName; // stores the name of the file
        String bankCustomer; // used to display the customers bank information
        int menuOption = 0; // allows the user to enter a number so they can select what they want to do

        Scanner keyboard = new Scanner(System. in );

        // enter the file name to see customer information
        System.out.print("enter file name ");
        fileName = keyboard.nextLine();

        File file = new File(fileName);
        Scanner inputFile = new Scanner(file);

        // read customer information from file i need this
        while (inputFile.hasNext()) {
            bankCustomer = inputFile.nextLine();
            System.out.println(bankCustomer);
        }

        System.out.println("Please enter the number for the following:\n 1) Balance \n 2) Deposit + \n 3) Withdrawal \n 4) Quit ");

        menuOption = keyboard.nextInt();

        switch (menuOption) {
            case 1:
                // need to show balance how do i do that?
                while (inputFile.hasNext()) {

                    bankCustomer = inputFile.nextLine();
                    System.out.println(bankCustomer);
                }
                break;
            default:
                System.out.println("Invalid choice");
        }
        inputFile.close();
    }
}

4 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一种方法是从Scanner对象读取所有行并将其转换为List(ArrayList)或String Array。也就是说,数组或列表中的每个项目都对应于文件的一行。

然后,列表或数组的索引将提供该特定文件的内容。

=============================================== ==============================

好的,根据您的评论,既然您还没有学习阵列,您可以按照您的银行客户名称的方式进行操作

String bankCustomer = inputFile.nextLine();

//Assuming second line contains account number
String bankAccountNumber = inputFile.nextLine();

// Assuming third line contains account type.
String bankAccountType = inputFile.nextLine();

// Fourth line has your account balance
String bankAccountBalanceStr = inputFile.nextLine();

double bankAccountBalance = 0d;
if(null != bankAccountBalanceStr && 0 > bankAccountBalanceStr.length()){
     bankAccountBalance = Double.parseDouble(bankAccountBalanceStr);
}

当然,答案只是指示性的,并没有进行所有空检查,并假设文件格式与您所说的完全相同。

答案 1 :(得分:0)

最简单的方法是简单地阅读并忽略前三行,例如:

for (int i = 0; i < 3; i++)
    inputFile.nextLine();

然后使用Integer.parseInt()方法将第四行读作整数。

int total = Integer.parseInt (inputFile.nextLine ());

请注意,在两个片段中都忽略了错误和异常处理。

答案 2 :(得分:0)

如果不重新创建数据和代码,您似乎正在向银行客户读取整行数据。如果数据文件结构以逗号分隔,则可以将该行拆分为组件。定义数据类

public static class customer {
   public String first;
   public String last;
   public String customer_i;
   public double balance:

}

将行转换为数据类后,您可以通过以下方式引用每一行:

balance = customer.balance.  etc.

这是近似值,但我希望它有所帮助。

答案 3 :(得分:0)

您可以读取3行而不保存其值, 或搜索每一行的关键字:

int balance;
if(!bankCustomer.indexOf("balance") != -1)
{
    balance = Integer.parseInt(bankCustomer);
}