目前的問題是//DBUtil.main(args);這句代碼不能刪
我刪了的話就登錄不了,但是不刪的話,如果程式關閉重新打開,資料還是原來的資料,修改后的沒了
請問有什么方法能讓程式重新打開是上次修改后的資料
package project;
public class User {
private String cardID; //卡號
private String cardPwd; //密碼
private String userName; //賬戶名
private String call; //手機號
private double account; //存款余額
public String getCardID() {
return cardID;
}
public void setCardID(String cardID) {
this.cardID = cardID;
}
public String getCardPwd() {
return cardPwd;
}
public void setCardPwd(String cardPwd) {
this.cardPwd = cardPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getCall() {
return call;
}
public void setCall(String call) {
this.call = call;
}
public double getAccount() {
return account;
}
public void setAccount(double account) {
this.account = account;
}
}
package project;
import java.util.HashMap;
public class DBUtil {
public static HashMap<String, User> users = new HashMap<String, User>();
static User u1 = new User();
static User u2 = new User();
public static void main(String[] args) {
u1.setCardID("123456");
u1.setCardPwd("123456");
u1.setUserName("張三");
u1.setCall("12345678911");
u1.setAccount(100);
u2.setCardID("1234");
u2.setCardPwd("123");
u2.setUserName("李四");
u2.setCall("12345");
u2.setAccount(1000);
users.put(u1.getCardID(), u1);
users.put(u2.getCardID(), u2);
}
public static String show(User u){
return "卡號:"+u.getCardID()+" 密碼:"+u.getCardPwd()+" 用戶名:"+u.getUserName()+
" 電話:"+u.getCall()+" 余額:"+u.getAccount();
}
}
package project;
import java.util.HashMap;
import java.util.Scanner;
public class Bank {
static Scanner in = new Scanner(System.in);
static HashMap<String, User> map = DBUtil.users;
static User u;
public static void main(String[] args) {
//DBUtil.main(args);
int num = 3;
while (true) {
System.out.println("請輸入卡號");
String cardID = in.nextLine();
System.out.print("請輸入銀行卡密碼:");
System.out.println();
String cardPwd = in.nextLine();
u = map.get(cardID);
if (map.containsKey(cardID) && u.getCardPwd().equals(cardPwd)) {
System.out.println("歡迎 " + u.getUserName() + " 先生/女士!您的個人資訊如下");
System.out.println(DBUtil.show(u));
choose(u);
break;
} else {
if (num >= 0 && num <= 3) {
num -= 1;
System.out.println("密碼輸入錯誤,重新出入,您還有" + num + "次機會!");
}
if (num == 0) {
System.out.println("您已輸入錯誤達到三次,請稍后嘗試!");
break;
}
}
}
}
public static void choose(User u){
while (true) {
int num, temp = 0;
System.out.println("*******************************");
System.out.println("輸入您要選擇的操作!");
System.out.println("1.存款");
System.out.println("2.余額");
System.out.println("3.退出");
System.out.println("4.取款");
System.out.println("*******************************");
try {
num = Integer.parseInt(in.nextLine().trim());
} catch (Exception e) {
System.out.println("只能輸入整數,請您重新輸入!");
continue;
}
switch (num) {
case 1:
deposit(u);
break;
case 2:
balance();
break;
case 3:
System.out.println("*******************************");
System.out.println("請您將卡收好,帶走隨身物品!");
temp = 1;
break;
case 4:
withdraw(u);
break;
default:
System.out.println("您輸入的數字有錯誤,請輸入1退出,其他任意鍵繼續!");
temp = Integer.parseInt(in.nextLine().trim());
break;
}
if (temp == 1) {
break;
}
}
}
public static User deposit(User u) { //存款
while (true) {
double money=0,temp=0;
System.out.println(u.getUserName() + " 先生/女士 您的賬戶余額為"
+ u.getAccount() + "元!");
System.out.println("請輸入您本次要存款的金額:");
try {
money = Integer.parseInt(in.nextLine().trim());
} catch (Exception e) {
System.out.println("您輸入的有誤,請重新輸入");
continue;
}
if(money >= 0){
temp = money + u.getAccount();
u.setAccount(temp);
}
if(money < 0){
System.out.println("您輸入的金額錯誤,即將退出!");
return u;
}
}
}
public static void balance() { //余額
System.out.println(u.getUserName() + " 先生/女士 您的賬戶余額為"
+ u.getAccount() + "元!");
}
public static User withdraw(User u) { //取款
while(true){
double money=0,temp=0,account=0;
account = u.getAccount();
if(account >0){
System.out.println(u.getUserName() + " 先生/女士 您的賬戶余額為"
+ u.getAccount() + "元!");
System.out.println("請輸入您本次要取款的金額:");
try {
money = Integer.parseInt(in.nextLine().trim());
} catch (Exception e) {
System.out.println("您的輸入有誤,請重新輸入");
continue;
}
if(money >= 0){
temp = money - u.getAccount();
if(temp < 0){
System.out.println("您取款的金額大于您的余額,即將退出!");
return u;
}
if(temp > 0){
u.setAccount(temp);
}
}
if(money < 0){
System.out.println("您輸入的金額錯誤,即將退出!");
return u;
}
}else {
System.out.println("您賬戶的余額不足,無法進行取款!");
return u;
}
}
}
}
uj5u.com熱心網友回復:
你 的 map 只是存在與記憶體中的,程式中斷 記憶體 中相關就 清除了;你需要將map保存起來,如:資料庫,檔案..........之類的,每次程式啟動時,加載到Map
uj5u.com熱心網友回復:
一個是永久化到資料庫,一個是保存到redis之類的快取,但是快取被清,也是沒有資料所以建議保存到資料庫,每次重啟的時候初始化加載下
uj5u.com熱心網友回復:
一般都是存在資料庫,你這個其實也可以保到到一個檔案中轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37897.html
標籤:Eclipse
