Part4: Lesen Sie eine Zeichenkette aName, eine int aPin, eine doppelte aWithdraw, und eine doppelte aDeposit. Suchen Sie dann in einem anderen Array, um einen Kundendatensatz mit dem Namen aName und dem Pin aPin zu finden. Wenn der Datensatz gefunden wird, führen Sie die Auszahlung und Einzahlungen mit einerWithdraw- und einerEinzahlungsbeträge durch und aktualisieren Sie den Saldo des Datensatzes. Sonst eine Fehlermeldung ausgeben. Dieser Vorgang kann für andere Transaktionen in anderen Datensätzen wiederholt werden. Ich habe ein wenig getan, ich bekomme einen Fehler in der 'if-Anweisung'.Wie suche ich nach einem Datensatz in einem Array und aktualisiere dann den Saldo?
Teil5: Schreiben Sie die Kundendatensätze aus einem anderenArray in die Binärdatei customer_records.dat, nachdem Sie die Kundendatensätze aktualisiert haben.
Bitte Hilfe! Ich würde das wirklich zu schätzen wissen!
import java.io.Serializable;
import java.util.Scanner;
/**
Serialized class for data on endangered species.
Includes a main method.
*/
public class CustomerRecord implements Serializable
{
private String name;
private int pin;
private int account;
private static double balance;
public CustomerRecord()
{
name = null;
pin = 0;
account = 0;
balance = 0.00;
}
public CustomerRecord(String initialName, int initialPin, int initialAccount, double initialBalance)
{
name = initialName;
if (initialPin >= 1111 && initialPin <= 9999)
pin = initialPin;
else
{
System.out.println("ERROR: Pin is not acceptable.");
System.exit(0);
}
if (initialAccount >= 400111 && initialAccount <= 500111)
account = initialAccount;
else
{
System.out.println("ERROR: Account number is not acceptable.");
System.exit(0);
}
if (initialBalance >= 0)
balance = initialBalance;
else
{
System.out.println("ERROR: Initial Balance is not acceptable.");
System.exit(0);
}
}
public String toString()
{
return ("Name = " + name
+ " Account = " + account
+ " Balance = " + "$" + balance + "\n");
}
public void setCustomerRecord()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("\nEnter new customer's name: ");
name = keyboard.nextLine();
System.out.println("Enter new customer's pin: ");
pin = keyboard.nextInt();
while (pin < 1111 || pin > 9999)
{
System.out.println("Pin should be in the range of 1111-9999.");
System.out.println("Reenter pin:");
pin = keyboard.nextInt();
}
System.out.println("Enter new customer's account no: ");
account = keyboard.nextInt();
while (account < 400111 || pin > 500111)
{
System.out.println("Account should be in the range of 400111-500111.");
System.out.println("Reenter account number:");
account = keyboard.nextInt();
}
System.out.println("Enter new customer's initial balance: ");
balance = keyboard.nextDouble();
while (balance < 0)
{
System.out.println("Initial balance should be positive or zero.");
System.out.println("Reenter initial balance:");
balance = keyboard.nextDouble();
}
}
public void writeOutput()
{
System.out.print("Name = " + name + "\t");
System.out.print("Account = " + account + "\t");
System.out.print("Balance = " + "$" + balance + "\n");
}
public String getName()
{
return name;
}
public int getPin()
{
return pin;
}
public int getAccount()
{
return account;
}
public void setBalance(double amount)
{
balance = amount;
}
public static void deposit(double aDeposit)
{
balance = balance + aDeposit;
}
public static void withdraw(double aWithdraw)
{
if
(balance >= aWithdraw)
balance = balance - aWithdraw;
else if
(balance < aWithdraw)
System.out.println("Cannot withdarw amount.");
return;
}
public double getBalance()
{
return balance;
}
public boolean equal(CustomerRecord otherObject)
{
return (name.equalsIgnoreCase(otherObject.name) &&
(pin == otherObject.pin) &&
(account == otherObject.account) &&
(balance == otherObject.balance));
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;
public class BankCustomers
{
public static void main(String[] args)
{
//----------------------------------------------------------------
//part1: Create array of customer records and write them
//in the file customer_record.dat
CustomerRecord[] oneArray = new CustomerRecord[100];
oneArray[0] = new CustomerRecord("John Gray", 2222, 400222, 10000.00);
oneArray[1] = new CustomerRecord("Ann Black", 3333, 400333, 1500.00);
oneArray[2] = new CustomerRecord("Mary White", 4444, 400555, 16500.00);
oneArray[3] = new CustomerRecord("Jack Green", 7777, 400888, 100.00);
int index = 4;
String fileName = "customer_records.dat";
System.out.println("---Open file: " + fileName);
System.out.println("---Customer records written to file: " + fileName);
System.out.println("---Close file: " + fileName);
try
{
ObjectOutputStream outputStream =
new ObjectOutputStream(
new FileOutputStream(fileName));
outputStream.writeObject(oneArray);
outputStream.close();
}
catch(IOException e)
{
System.out.println("Error writing to file " +
fileName + ".");
System.exit(0);
}
System.out.println("\n");
//-------------------------------------------------------------------
//Part2: Read from the file customer_record.dat and save
//the customer records in anotherArray
System.out.println("---Open file: " + fileName);
System.out.println("---Customer records read from file: " + fileName);
System.out.println("---Close file: " + fileName);
CustomerRecord[] anotherArray = null;
try
{
ObjectInputStream inputStream =
new ObjectInputStream(
new FileInputStream(fileName));
anotherArray = (CustomerRecord[])inputStream.readObject();
inputStream.close();
}
catch(Exception e)
{
System.out.println("Error reading file " +
fileName + ".");
System.exit(0);
}
//Print the records on screen
for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);
//------------------------------------------------
//Part3: Add a new customer record to anotherArray
anotherArray[index] = new CustomerRecord();
anotherArray[index].setCustomerRecord();
index++;
//Print the records on screen
for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);
//------------------------------------------------
//Part4: Find a customer record from anotherArray
//to do transaction(s) and update the record's balance
char repeat; // User control to repeat or quit
do{
System.out.println("Enter the name");
String aName;
Scanner keyboard = new Scanner(System.in);
aName = keyboard.nextLine();
System.out.println("Enter the pin");
int aPin;
aPin = keyboard.nextInt();
System.out.println("Enter the amount you wish to withdraw");
double aWithdraw;
aWithdraw = keyboard.nextDouble();
CustomerRecord.withdraw(aWithdraw);
System.out.println("Enter the amount you wish to deposit");
double aDeposit;
aDeposit = keyboard.nextDouble();
CustomerRecord.deposit(aDeposit);
for
(int i = 0; i < anotherArray.length; i++) {
CustomerRecord record = anotherArray[i];
if
((record.getName().equalsIgnoreCase(aName)) && (record.getPin() == (aPin)))
{
System.out.println(record);
record.getBalance();
}
}
System.out.println("\nAnother Transaction? (y for yes)");
repeat = keyboard.next().charAt(0);
}
while
(
repeat == 'y' || repeat == 'Y') ;
//Print the records on screen
{ for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);
}
//------------------------------------------------
//Part5: Write the customer records from anotherArray
//in the file customer_record.dat
String fileName1 = "customer_records.dat";
System.out.println("---Open file: " + fileName1);
System.out.println("---Customer records written to file: " + fileName1);
System.out.println("---Close file: " + fileName1);
try
{
ObjectOutputStream outputStream =
new ObjectOutputStream(
new FileOutputStream(fileName1));
outputStream.writeObject(anotherArray);
outputStream.close();
}
catch(IOException e)
{
System.out.println("Error writing to file " +
fileName1 + ".");
System.exit(0);
}
System.out.println("\n");
//End of program
System.out.println("\n---End of program.");
}
}
bearbeiten
Fehlermeldung:
Exception in thread "main" java.lang.NullPointerException bei BankCustomers.main (BankCustomers.java:115)
Entschuldigung. – Jake
42. (Ernsthafter, geben Sie Ihr Problem, Fehler und so weiter.) –
* "Ich bekomme einen Fehler in der 'if-Anweisung'." * - Welcher Fehler? (Mein Gedankenlesegerät funktioniert heute Morgen nicht.) –