1

For a project I have a program that is like a bank. The "bank" reads in a file with accounts in it that look like this:
Miller
William
00001
891692 06 <----string that needs to be converted to double
The last string has to be converted to a double so that the program can perform calculations on it like addition and subtraction, etc.
And also I have to print it out in monetary format, i.e. $891692.06

I have this so far:

 public class Account {
      private String firstName, lastName;
      private int accountID;
      private String currentBalance; 

      private static int maxAccountID;

      public Account(String fN, String lN, int acct, String bal) {
         firstName = fN; lastName = lN;
         accountID = acct;
         currentBalance = bal;
         if(accountID > Account.maxAccountID)
            Account.maxAccountID = accountID;
      }     

  public double getBalance(){
        String [] s = currentBalance.split(" ");
        String balStr = "$"+s[0]+"."+s[1];
            double currentBalance = Double.parseDouble(balStr);
         return currentBalance;
      }
}

Thanks in advance!

Gcap
  • 378
  • 6
  • 11
  • 25
  • 3
    What exactly is your question? In your code already you convert a String to a double with `Double.parseDouble(balStr)` – adchilds Oct 31 '12 at 19:50

4 Answers4

14

If your string representing double uses space ' ' instead of a decimal point, you can fix it by replacing the space with a dot, like this:

String currentBalanceStr = "891692 06";
double currentBalanceDbl = Double.parseDouble(currentBalanceStr.replaceAll(" ","."));

Link to ideone.

Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523
4

Using Double for balance calculation is not a good idea, it makes more sense to use the BigDecimal because it is more precise.

You can also add the currency using the class bellow:

Locale enUSLocale =
    new Locale.Builder().setLanguage("en").setRegion("US").build();

Currency currencyInstance = Currency.getInstance(enUSLocale);

System.out.println(
    "Symbol for US Dollar, en-US locale: " +
    currencyInstance.getSymbol(enUSLocale));

please go through this link for more details.

tokhi
  • 21,044
  • 23
  • 95
  • 105
3

It seems like you are doing some currency calculation, so always use BigDecimal

BigDecimal balStr = new BigDecimal(String.replaceAll(" ",".");
0
String s="891692 06";
Double.parseDouble(s.replace(" ", ".")); would do the trick

You can use NumberFormatClass from the API to get the monetary information.

soz
  • 304
  • 2
  • 11
PermGenError
  • 45,977
  • 8
  • 87
  • 106