2014-10-05 2 views
0

여기 내 코드가 있는데, 내 문제는 레코드가 입력 내용과 일치하면 텍스트 파일의 문자열을 대체하는 것입니다. 내 프로그램을 실행하려고하면 내 OS는 우분투입니다. 관리자 패널 예금을 추가하기 위해java를 사용하여 textfile의 문자열을 바꾸는 방법은 무엇입니까?

package atm_bankmanagement; 
import java.util.Scanner; 
import java.io.*; 
public class ATM_BankManagement { 

// create a main menu 

public static void MainMenu() 
{ 
System.out.println("[1] Admin"); 
System.out.println("[2] User"); 
System.out.println("[3] Exit"); 

Scanner a = new Scanner(System.in); 
int mainChoice=a.nextInt(); 
switch(mainChoice) 
{ 
case 1: AdminPanel(); 
break; 
case 2: UserPanel(); 
break; 
     case 3: 
      break; 
} 
} 
// END OF MainMenu method 

// create a method for admin panel 

public static void AdminPanel() 
{ 
    System.out.print("Enter password: "); 
    Scanner sc = new Scanner(System.in); 
    int pass = sc.nextInt(); 
    if ((pass==132748)) 
    { 
    System.out.println("---ADMIN PANEL---"); 
    System.out.println("[1] Add Bank Account"); 
    System.out.println("[2] Add Deposit"); 
    System.out.println("[3] Exit"); 

    Scanner b = new Scanner(System.in); 
    int adminPanelChoice=b.nextInt(); 
    switch(adminPanelChoice) 
    { 
     case 1: APaddbankaccount(); 
      break; 
     case 2: APadddeposit(); 
      break; 
     case 3: MainMenu(); 
      break; 
    } 
    } 
    else 
    { 
     System.out.println("Invalid password!"); 
     MainMenu(); 
    } 

} 
// END OF AdminPanel method 

// create a method for admin panel add bank account 

public static void APaddbankaccount() 
{ 
    System.out.println("---ADMIN PANEL---"); 
    System.out.println("--Add Bank Account--"); 
    System.out.print("Enter Account Name: "); 
    Scanner c = new Scanner(System.in); 
    String accname = c.nextLine(); 
    System.out.print("Enter Account Number: "); 
    Scanner d = new Scanner(System.in); 
    int accnum = d.nextInt(); 
    System.out.print("Enter Amount: "); 
    Scanner f = new Scanner(System.in); 
    int amount=f.nextInt(); 


    try 
    { 
     File fi = new File("/home/kean/insert.txt") ; 
     BufferedWriter w = new BufferedWriter(new FileWriter(fi,true)); 
     w.write(accnum+";"+accname+";"+amount); 
     w.newLine(); 

     System.out.println("[1] Save Entry"); 
     System.out.println("[2] Exit"); 

     Scanner g = new Scanner(System.in); 
     int addbankaccountChoice=g.nextInt(); 
     switch(addbankaccountChoice) 
     { 
      case 1: w.flush(); w.close();System.out.println("Saved...");MainMenu(); 
       break; 
      case 2: MainMenu(); 
     } 
    } 
    catch(IOException e) 
    { 

    } 

} 
// END OF APaddbankaccount 

// 방법을 만들

public static void APadddeposit() 
{ 
    System.out.println("---ADMIN PANEL---"); 
    System.out.println("--Add Deposit--"); 
    System.out.print("Enter account number:"); 
    Scanner h = new Scanner(System.in); 
    String con = h.next(); 

    int pin = Integer.parseInt(con); 

    try 
    { 

     BufferedReader br = new BufferedReader(new FileReader("/home/kean/insert.txt")); 
     String mysplit=""; 


     String arr[] = new String[mysplit.split(";").length]; 
    String acname=""; 


     for(int i=0;i<arr.length;i++) 
     { 
      while((mysplit=br.readLine())!=null) 
     { 
      arr=mysplit.split(";"); 
      if((arr[i]).equals(con)) 
      { 
       String accountName = arr[1]; 

       acname = accountName; 
       System.out.println("Account Name: "+acname); 

      } 

     } 
     } 
     System.out.print("Enter Amount to be deposited: "); 
     Scanner j = new Scanner(System.in); 
     String depAmount=j.next(); 

     arr[2]=depAmount; 
     System.out.print("Date: "); 
     Scanner k = new Scanner(System.in); 
     String dt = k.nextLine(); 

     File fil = new File("/home/kean/deposit.txt"); 
     BufferedWriter bw = new BufferedWriter(new FileWriter(fil,true)); 


     bw.write(con+";"+acname+";"+depAmount+";"+dt); 
     bw.newLine(); 


     System.out.println("[1] Save Entry"); 
     System.out.println("[2] Cancel"); 
     Scanner l = new Scanner(System.in); 
     int depChoice=l.nextInt(); 
     switch(depChoice) 
     { 
      case 1: bw.flush(); bw.close(); System.out.println("Saved...");MainMenu(); 
       break; 
      case 2: MainMenu(); 
       break; 
     } 

    } 
    catch(IOException e) 
    { 

    } 

} 
// END OF APadddeposit method 

//<!--------C-O-D-E--H-A-R-D---------!> 

// 다음과 같은 사용자 계정에 대한 방법

public static void UserPanel() 
{ 
    System.out.println("---USER PANEL---"); 

    System.out.print("Enter PIN: "); 
    Scanner m = new Scanner(System.in); 
    String myPin = m.next(); 



    try 
    { 
      BufferedReader br = new BufferedReader(new FileReader("/home/kean/insert.txt")); 
     String mysplit=""; 

     String arr[] = new String[mysplit.split(";").length]; 
     String myname=""; 


     BufferedReader nbr = new BufferedReader(new FileReader("/home/kean/deposit.txt")); 
     String nmysplit=""; 

     String myarr[] = new String[nmysplit.split(";").length]; 


     for(int i=0;i<myarr.length;i++) 
     { 
      while((mysplit=br.readLine())!=null && (nmysplit=nbr.readLine())!=null) 
     { 

      arr=mysplit.split(";"); 
      myarr=nmysplit.split(";"); 
      if((myarr[i]).equals(myPin) && (arr[i]).equals(myPin)) 
      { 


       String accounName = arr[1]; 
       String money1 = arr[2]; 
       String money2= myarr[2]; 
       int mon = Integer.parseInt(money1); 
       int monn = Integer.parseInt(money2); 
       int totalmoney = mon+monn; 

       myname = accounName; 

       File myFi = new File("/home/kean/balance.txt"); 
       BufferedWriter wri = new BufferedWriter(new FileWriter(myFi,true)); 


       wri.newLine(); 
       wri.flush(); 

     System.out.println("Hi "+accounName+" what do you want to do?"); 
     System.out.println("[1] Balance Inquiry"); 
     System.out.println("[2] Withdraw"); 
     System.out.println("[3] Exit"); 
     Scanner n = new Scanner(System.in); 
     int usersChoice=n.nextInt(); 
     switch(usersChoice) 
     { 
      case 1: 
       System.out.println("Your Current Balance is " +totalmoney);wri.close(); 

    MainMenu(); 
       break; 
      case 2: System.out.println("Your Current Balance is " +totalmoney); 
        System.out.println("Enter amount to be withdraw: "); 
        Scanner o = new Scanner(System.in); 
       int wdrw = o.nextInt(); 
       if(wdrw>25000) 
       { 
        System.out.println("Sorry you can't withdraw an amount higher than 25000"); 
        UserPanel(); 
       } 
      else 
       { 
        File Note = new File("/home/kean/wihdraw.txt"); 
        BufferedWriter wrt = new BufferedWriter(new FileWriter(Note)); 

        wrt.write(myPin+";"+accounName+";"+wdrw); 
        wrt.newLine(); 
        wrt.flush(); 
        wrt.close(); 
        int remain = totalmoney-wdrw; 
        System.out.println("Your remaining balance is "+remain); 
        MainMenu(); 
       } 
      break; 
     } 

      } 

     } 
     } 


    } 
    catch(IOException e) 
    { 

    } 
} 

// END OF UserPanel's method 

public static void main(String[] args) 
{ 
    MainMenu(); 
} 

}

답변

1

쉽게 할 수를 만들

Path path = Paths.get("home/kean/insert.txt"); 
Charset charset = StandardCharsets.UTF_8; 

String content = new String(Files.readAllBytes(path), charset); 
content = content.replaceAll("foo", "bar"); 
Files.write(path, content.getBytes(charset)); 

또는 Java 7 이상

String content = IOUtils.toString(new FileInputStream(myfile), myencoding); 
content = content.replaceAll(myPattern, myReplacement); 
IOUtils.write(content, new FileOutputStream(myfile), myencoding); 

그러나 통지를하시기 바랍니다, 당신은 오류 처리를 추가해야하고 스트림을 닫아야합니다.

IOUtils : http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html

+0

당신을 위해 내 코드 조각을 작동하거나 문제가 지금 무엇을 –

+0

내 code_를 실행하려고 _Please? –

+0

:(:((((((( –

관련 문제