나는 이것을 알아 내는데 큰 문제가있다. (clients.txt) 내 데이터베이스는 다음과 같습니다 : 왼쪽부터자바 - 해시 맵에 데이터 저장
Tom;Test1;1000000.00;58010168302;63481000-10000090;1111;2000000.00;1000000.00
John;Test2;1000000.00;58010158125;63481000-10000091;2222;2000000.00;1000000.00
:
name;surname;balance;pesel;cardNumber;pin;dailyLimit;maxDebit
나는 개인 필드, 게터, 세터와 클라이언트를 읽어 DataBaseHandler 클래스와 단순히 데이터베이스 클래스가 있습니다. ATMServer 클래스에이 클라이언트 - 서버 응용 프로그램 (ATM의 시뮬레이터), 그래서 (읽기 전화 드렸습니다됩니다
public static Map<Integer, DataBase> data = new HashMap<Integer, DataBase>();
private static Scanner scanner;
public static void read() {
try {
scanner = new Scanner(new FileReader("db/clients.txt"));
int i = 0;
while(scanner.hasNextLine()) {
String[] columnData = scanner.nextLine().split(";");
data.put(i, new DataBase(columnData[0],
columnData[1],
columnData[2],
columnData[3],
columnData[4],
columnData[5],
columnData[6],
columnData[7]));
i++;
}
) 기능과 나는 일에 (읽기) 운영 해요 : TXT 및 내의 HashMap한다 ATMProtocol 클래스의 데이터 (DataBaseHandler를 확장) 내 문제는 어디에 있습니까? 지불 기능을 만들기. 간단히 균형의 가치를 바꾸거나 새로운 금액의 새로운 줄을 만들고 오래된 것을 삭제하고이를 clients.txt 파일에 저장하고 싶습니다. 내가 그 기능을했습니다, 그래서 나는 직렬화에 대해 읽었습니다 :이 응용 프로그램의 clients.txt를 실행 한 후
private String payment(String frameNum,
String cardNum,
String pinNum,
String amount) {
/* something less important
String answer = null;
double localAmount = Double.parseDouble(amount);
double newAmount = 0;
for(int i = 0; i < data.size(); i++) {
if(cardNum.equals(data.get(i).getCardNumber())
&& pinNum.equals(data.get(i).getPin())
&& checkAmount(localAmount, i)) {
newAmount = Double.parseDouble(data.get(i).getBalance()) - localAmount;
String newAmountString = String.valueOf(newAmount); */
DataBase dbBase = new DataBase(data.get(i).getName(),
data.get(i).getSurname(),
newAmountString,
data.get(i).getPesel(),
data.get(i).getCardNumber(),
data.get(i).getPin(),
data.get(i).getDailyLimit(),
data.get(i).getMaxDebit());
try {
FileOutputStream fileOut = new FileOutputStream("db/clients.txt",true);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(dbBase);
out.close();
fileOut.close();
} catch(IOException e) {
e.printStackTrace();
}
은 다음과 같습니다
Tom;Test1;1000000.00;58010168302;63481000-10000090;1111;2000000.00;1000000.00
John;Test2;1000000.00;58010158125;63481000-10000091;2222;2000000.00;1000000.00
cardNumberq
dailyLimitq
2000000.00t
1000000.00t
무슨 대부분의 supprising 것은입니다 나는 마지막 4 개 행을 복사 할 때 Ctrl + V를 누르면 붙습니다.
cardNumberq
행. 인코딩에 문제가 있습니까? 내 문제를 해결하는 방법?
감사합니다. 이것은 자바에서 내 첫 "큰"프로젝트이므로, 당신 같은 사람들로부터 배우는 것이 좋다. :) – tmq