Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4621342
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T02:41:15+00:00 2026-05-22T02:41:15+00:00

I have some code where I am serializing one of my classes that contains

  • 0

I have some code where I am serializing one of my classes that contains a DecimalFormat number. This worked up until 2.3.4. How can I resolve?

ERROR/AndroidRuntime(684): java.lang.IllegalArgumentException: no char field 'exponential'

Here is the class that I am serializing:

public class Quote implements Serializable  {

    private static final long serialVersionUID = 1L;

    private String symbol;
    private String name;
    private String change;
    private String percentChange;
    private String open;
    private String daysHigh;
    private String daysLow;
    private String dividendYield;
    private String volume;
    private String averageDailyVolume;
    private String peRatio;
    private String marketCapitalization;
    private String yearHigh;
    private String yearLow;
    private String lastTradePriceOnly;
    private DecimalFormat df = new DecimalFormat("#,###,###,###,###,##0.00");
    private DecimalFormat vf = new DecimalFormat("#,###,###,###,###,##0");

    public String getSymbol() {
        return symbol;
    }
    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getChange() {
        return change;
    }
    public void setChange(String change) {
        if(change.equals("null")){
            this.change = "N/A";
        }
        else{   
            float floatedChange = Float.valueOf(change);
            this.change = (df.format(floatedChange));
        }
    }
    public String getPercentChange() {
        return percentChange;
    }
    public void setPercentChange(String percentChange) {
        if(percentChange.equals("null"))
            percentChange = "N/A";
        else
            this.percentChange = percentChange;
    }
    public String getOpen() {
        return open;
    }
    public void setOpen(String open) {
        if(open.equals("null"))
            this.open = "N/A";
        else
            this.open = open;
    }
    public String getDaysHigh() {
        return daysHigh;
    }
    public void setDaysHigh(String daysHigh) {
        if(daysHigh.equals("null"))
            this.daysHigh = "N/A";
        else{
            float floatedDaysHigh = Float.valueOf(daysHigh);
            this.daysHigh = (df.format(floatedDaysHigh));
        }
    }
    public String getDaysLow() {
        return daysLow;
    }
    public void setDaysLow(String daysLow) {
        if(daysLow.equals("null"))
            this.daysLow = "N/A";
        else{
            float floatedDaysLow = Float.valueOf(daysLow);
            this.daysLow = (df.format(floatedDaysLow));
        }
    }
    public String getVolume() {
        return volume;
    }
    public void setVolume(String volume) {
        if(volume.equals("null")){
            this.volume = "N/A";
        }
        else{
            float floatedVolume = Float.valueOf(volume);
            this.volume = (vf.format(floatedVolume));
        }
    }
    public String getDividendYield() {
        return dividendYield;
    }
    public void setDividendYield(String dividendYield) {
        if(dividendYield.equals("null"))
            this.dividendYield = "N/A";
        else
            this.dividendYield = dividendYield;
    }
    public String getAverageDailyVolume() {
        return averageDailyVolume;
    }
    public void setAverageDailyVolume(String averageDailyVolume) {
        if(averageDailyVolume.equals("null")){
            this.averageDailyVolume = "N/A";
        }
        else{
            float floatedAverageDailyVolume = Float.valueOf(averageDailyVolume);
            this.averageDailyVolume = (vf.format(floatedAverageDailyVolume));
        }
    }
    public String getPeRatio() {
        return peRatio;
    }
    public void setPeRatio(String peRatio) {
        if(peRatio.equals("null"))
            this.peRatio = "N/A";
            else
        this.peRatio = peRatio;
    }
    public String getMarketCapitalization() {
        return marketCapitalization;
    }
    public void setMarketCapitalization(String marketCapitalization) {
        if(marketCapitalization.equals("null"))
            this.marketCapitalization = "N/A";
        else
            this.marketCapitalization = marketCapitalization;
    }
    public String getYearHigh() {
        return yearHigh;
    }
    public void setYearHigh(String yearHigh) {
        if(yearHigh.equals("null"))
            this.yearHigh = "N/A";
        else
            this.yearHigh = yearHigh;
    }
    public String getYearLow() {
        return yearLow;
    }
    public void setYearLow(String yearLow) {
        if(yearLow.equals("null"))
            this.yearLow = "N/A";
        else
            this.yearLow = yearLow;
    }

    public String getLastTradePriceOnly() {
        return lastTradePriceOnly;
    }

    public void setLastTradePriceOnly(String lastTradePriceOnly) {
        if(lastTradePriceOnly.equals("null")){
            this.lastTradePriceOnly = "N/A";
        }
        else{
            float floatedLastTradePriceOnly = Float.valueOf(lastTradePriceOnly);
            this.lastTradePriceOnly = (df.format(floatedLastTradePriceOnly));
        }
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((change == null) ? 0 : change.hashCode());
        result = prime * result
                + ((daysHigh == null) ? 0 : daysHigh.hashCode());
        result = prime * result + ((daysLow == null) ? 0 : daysLow.hashCode());
        result = prime
                * result
                + ((lastTradePriceOnly == null) ? 0 : lastTradePriceOnly
                        .hashCode());
        result = prime
                * result
                + ((marketCapitalization == null) ? 0 : marketCapitalization
                        .hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((open == null) ? 0 : open.hashCode());
        result = prime * result + ((peRatio == null) ? 0 : peRatio.hashCode());
        result = prime * result
                + ((percentChange == null) ? 0 : percentChange.hashCode());
        result = prime * result + ((symbol == null) ? 0 : symbol.hashCode());
        result = prime * result + ((volume == null) ? 0 : volume.hashCode());
        result = prime * result
                + ((yearHigh == null) ? 0 : yearHigh.hashCode());
        result = prime * result + ((yearLow == null) ? 0 : yearLow.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Quote other = (Quote) obj;
        if (change == null) {
            if (other.change != null)
                return false;
        } else if (!change.equals(other.change))
            return false;
        if (daysHigh == null) {
            if (other.daysHigh != null)
                return false;
        } else if (!daysHigh.equals(other.daysHigh))
            return false;
        if (daysLow == null) {
            if (other.daysLow != null)
                return false;
        } else if (!daysLow.equals(other.daysLow))
            return false;
        if (lastTradePriceOnly == null) {
            if (other.lastTradePriceOnly != null)
                return false;
        } else if (!lastTradePriceOnly.equals(other.lastTradePriceOnly))
            return false;
        if (marketCapitalization == null) {
            if (other.marketCapitalization != null)
                return false;
        } else if (!marketCapitalization.equals(other.marketCapitalization))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (open == null) {
            if (other.open != null)
                return false;
        } else if (!open.equals(other.open))
            return false;
        if (peRatio == null) {
            if (other.peRatio != null)
                return false;
        } else if (!peRatio.equals(other.peRatio))
            return false;
        if (percentChange == null) {
            if (other.percentChange != null)
                return false;
        } else if (!percentChange.equals(other.percentChange))
            return false;
        if (symbol == null) {
            if (other.symbol != null)
                return false;
        } else if (!symbol.equals(other.symbol))
            return false;
        if (volume == null) {
            if (other.volume != null)
                return false;
        } else if (!volume.equals(other.volume))
            return false;
        if (yearHigh == null) {
            if (other.yearHigh != null)
                return false;
        } else if (!yearHigh.equals(other.yearHigh))
            return false;
        if (yearLow == null) {
            if (other.yearLow != null)
                return false;
        } else if (!yearLow.equals(other.yearLow))
            return false;
        return true;
    }
}

And here is my serialize operation (note quotes is an array list):

private void serializeQuotes() {
        FileOutputStream fos;
        try {
            fos = openFileOutput(Constants.FILENAME, Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(quotes); //this is an ArrayList<Quote>
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T02:41:16+00:00Added an answer on May 22, 2026 at 2:41 am

    Why are you serializing a DecimalFormat at all? Replace the instance DecimalFormat fields with static ones. If concurrency is a concern, use static ThreadLocal<DecimalFormat>s.

    public class Quote implements Serializable  {
    
        private static final long serialVersionUID = 1L;
    
        private String symbol;
        private String name;
        private String change;
        private String percentChange;
        private String open;
        private String daysHigh;
        private String daysLow;
        private String dividendYield;
        private String volume;
        private String averageDailyVolume;
        private String peRatio;
        private String marketCapitalization;
        private String yearHigh;
        private String yearLow;
        private String lastTradePriceOnly;
    
    
        private static final ThreadLocal<DecimalFormat> df = new ThreadLocal<DecimalFormat> {
            @Override
            protected DecimalFormat initialValue() {
                return new DecimalFormat("#,###,###,###,###,##0.00");
            }
        }
    
        private static final ThreadLocal<DecimalFormat> vf = new ThreadLocal<DecimalFormat> {
            @Override
            protected DecimalFormat initialValue() {
                return new DDecimalFormat("#,###,###,###,###,##0");
            }
        }
    
        // snip...
    
    }
    

    http://download.oracle.com/javase/6/docs/api/java/lang/ThreadLocal.html

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have some code like this in a winforms app I was writing to
I have some code like this: If key.Equals(search, StringComparison.OrdinalIgnoreCase) Then DoSomething() End If I
I have some code in a javascript file that needs to send queries back
I have some code that gives a user id to a utility that then
If we have a method: public void doSomething(){ synchronized(this){ //some code processing here }
I have some code that is looking up group memberships from local groups on
I have some code that's written like so: private double function1() { double result2
I have some code that tries to parse a date string. When I do
I have some code that I want to run in a utility application whenever
I have some code in a reusable class that modifies some types. Here's a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.