Question about maximum battery mAh

I posted a picture of my original and current battery health. It seems to be really good right as long as the current is higher than the original? Are there any tips on keeping my mAh higher than the original?

About Batteries in Modern Apple Laptops
Apple - Batteries - Notebooks
Extending the Life of Your Laptop Battery
Apple - Batteries
MacBook and MacBook Pro- Mac reduces processor speed when battery is removed while operating from an A-C adaptor
Battery University
Apple Portables- Calibrating your computer's battery for best performance
Mac notebooks- Determining battery cycle count
How to Calibrate Your Mac, iPhone, or iPad Battery | MacBlend
There is nothing wrong with your battery. Use it. When it drops below 20% remaining life, then recharge it. There is little else you need to do.

Similar Messages

  • Some questions about the battery

    I have a couple of questions about the battery in general.
    Is it normal that my iPod Touch 4G charges very fast? It reaches 60% in only one hour and it's fully charged before it takes two hours. I know this is not bad but I'm just worried. How can I be sure if it's really loaded?
    Is it normal that the battery is very quick empty when I'm gaming? For now I'm blaming this due to the quick charge.
    Is it normal that for example my battery level is at 30% and when I put on standby or something or close a game, the battery starts rising for approx. 5% even 10% sometimes?
    Those are my question, I hope they are clear enough. Thanks in advance.
    Regards

    1. The tech specs says:
    Charging times: Fast charge in about 2 hours (80% capacity), full charge in about 4 hours
    2. Heavy use like gaming drains the batery fater then other use. The tech specs say:
    Video playback time: Up to 7 hours when fully charged
    3.. Yes, the indicate capacity tends to rise after heary draining is stopped.  The battery indicator is not that accurate is affected by temperature. Heavy use increases battery temperature and when it decreases battery temperature decreases.

  • Question about calibrating battery

    I have a question about step 5, +Turn off the computer or allow it to sleep for five hours or more+. First off, does it mean let the battery completely run out and turn off the computer, or are we supposed to turn it off. Second, what is the purpose of letting it wait 5 hours before turning it back on? Thanks

    Tucker77 wrote:
    I have a query regarding this, my Macbook went to sleep after draining the power last night (following its first full charge). I plugged it in to recharge at 5:30 this morning and over four hours later, it still hasn't charged, or at least the light is still orange.
    For optimum calibration, does it matter if I use the Macbook while recharging or should it remain off? Should it take over four hours to charge up again?
    Yes, it matters I would let it charge completely until the light changes to green.
    As for the length for it to charge, 4 hours is about right, could be a little longer with a complete drain. Check out [apples battery page|http://www.apple.com/batteries> for more info.

  • Mid-2013 Macbook Air: question about the battery life

    First of all, I'm sorry if these questions have been already asked, I've looked around and I've seen some answers, but none that fit my specific case.
    I have had this computer since December (Macbook Air, 13'', Mid-2013), I've been using it for a month now. At the beginning, I used to use it until my battery was low (between 10 and 20%) and then charge it. Then I learnt that it's better to keep it plugged as much as possible (I have read this in other discussions and on the Apple page). The problem is that my battery is no longer a 100% of its capacity according to Cococnut Battery. It started with 99%, then back to 100%, then 98, 97... and now it varies from 97 to 98 (right now it says that my computer's current capacity is 6948 mAH). I don't know if this is normal, or if this is caused by the use I used to give to my macbook air at the beginning or by any other thing. I also have 19 loadcycles already. Besides, I have noticed that sometimes it jumps form 100% to 99% of battery pretty fast when I don't have it plugged, and I'm not sure if that happened before.
    This is my first time dealing with a macbook and I don't know how these things are supposed to work, and I'm worried my battery might have any kind of problem and that's why itdoesn't have full capacity anymore, since I've been using it for only a month.
    Also, sometimes it takes a little while to shut down. It usually takes 2 seconds, but sometimes it takes longer, maybe 20 seconds (first the screen turn white, then the loading icon appears and then it finally shuts down). Is this normal too for macbook airs?
    Thanks for the help!

    Those are only averages, for purposes of the battery 97 98 99 and 100 are the 'same thing'........theyre all estimates.
    Normal on shut down, sometimes you can see a few seconds, sometimes 10, 15 seconds shut down.....depends on what and HOW much its shutting down before poweroff.   Normal.
    ON BATTERY USE:
    Keep it plugged in when near a socket so you keep the charging cycles down on your LiPo (lithium polymer) cells / battery, but not plugged in all the time. When not being used for several hours, turn it off.
    http://www.apple.com/batteries/notebooks.html
    "Apple does not recommend leaving your portable plugged in all the time."
    General rule to remember of Lithium batteries is:
    Never drain them LOW  & dont always/often store them HIGH
    While cycle count is commonly seen to be the “miles” on your Lithium Ion pack cell in your Macbook, which they are, this distinction is not a fine line at all, and it is a big misconception to “count charge cycles”
    *A person who has, for example, 300 charge cycles on their battery and is recharging at say 50-60% remaining of a 100% charge has better battery usage and care than another person who has 300 charge cycles at say 15% remaining on a 100% charge. 
    DoD (depth of discharge) is far more important on the wear and tear on your Macbook battery than any mere charge cycle count.  *There is no set “mile” or wear from a charge cycle in general OR in specific.    As such, contrary to popular conception, counting cycles is not conclusive whatsoever, rather the amount of deep DoD on an averaged scale of its use and charging conditions.
                              (as a very rough analogy would be 20,000 hard miles put on a car vs. 80,000 good miles being something similar)
    *Contrary to some myths out there, there is protection circuitry in your Macbook and therefore you cannot overcharge it when plugged in and already fully charged
    *However if you don’t plan on using it for a few hours, turn it OFF (plugged in or otherwise) ..*You don’t want your Macbook both always plugged in AND in sleep mode       (When portable devices are charging and in the on or sleep position, the current that is drawn through the device is called the parasitic load and will alter the dynamics of charge cycle. Battery manufacturers advise against parasitic loading because it induces mini-cycles.)
    Keeping batteries connected to a charger ensures that periodic "top-ups" do very minor but continuous damage to individual cells, hence Apples recommendation above:   “Apple does not recommend leaving your portable plugged in all the time”, …this is because “Li-ion degrades fastest at high state-of-charge”.
                        This is also the same reason new Apple notebooks are packaged with 50% charges and not 100%.
    LiPo (lithium polymer, same as in your Macbook) batteries do not need conditioning. However...
    A lot of battery experts call the use of Lithium cells the "80% Rule" ...meaning use 80% of the charge or so, then recharge them for longer overall life.
    Never let your Macbook go into shutdown and safe mode from loss of power, you can corrupt files that way, and the batteries do not like it.
    The only quantified abuse seen to Lithium cells are instances when often the cells are repeatedly drained very low…. key word being "often"
    Contrary to what some might say, Lithium batteries have an "ideal" break in period. First ten cycles or so, don't discharge down past 40% of the battery's capacity. Same way you don’t take a new car out and speed and rev the engine hard first 100 or so miles.
    Proper treatment is still important. Just because LiPo batteries don’t need conditioning in general, does NOT mean they dont have an ideal use / recharge environment. Anything can be abused even if it doesn’t need conditioning.
    From Apple on batteries:
    http://support.apple.com/kb/HT1446
    http://www.apple.com/batteries/
    Storing your MacBook
    If you are going to store your MacBook away for an extended period of time, keep it in a cool location (room temperature roughly 22° C or about 72° F). Make certain you have at least a 50% charge on the internal battery of your Macbook if you plan on storing it away for a few months; recharge your battery to 50% or so every six months roughly if being stored away. If you live in a humid environment, keep your Macbook stored in its zippered case to prevent infiltration of humidity on the internals of your Macbook which could lead to corrosion.
    Considerations:
    Your battery is subject to chemical aging even if not in use. A Lithium battery is aging as soon as its made, regardless.
    In a perfect (although impractical) situation, your lithium battery is best idealized swinging back and forth between 20 and 85% SOC (state of charge) roughly.
    Further still how you discharge the battery is far more important than how it is either charged or stored short term, and more important long term that cycle counts.
    Ultimately counting charge cycles is of little importance.  Abuse in discharging (foremost), charging, and storing the battery and how it affects battery chemistry is important and not the ‘odometer’ reading, or cycle counts on the battery. 
    Everything boils down to battery chemistry long term, and not an arbitrary number, or cycle count.
    Keep your macbook plugged in when near a socket since in the near end of long-term life, this is beneficial to the battery.
    Peace

  • Question about battery life

    Hi everyone,
    I got my refurbished MBP 13" mid 2010 model two Friday's ago (July 16) from the Apple online store and I have some questions about the battery life....
    Immediately after I got it, I followed all the battery calibration instructions from apple.com/batteries (and did it again after it because I was unsure if I did it properly). While it was charging, I was installing some recommended applications, one being coconutBattery. In the additional information section, it said that my MBP was 7 weeks old, has gone threw 10 battery load cycles, and had a original battery capacity of 97%. I am now at 17 loadcycles, with 94% original battery capacity.
    Now to how much time I get with the battery... I have done some testing of my own, such as watching some movies (Tron and Star Trek First Contact, I'm a geek :D), basic web browsing (5 tabs open, reading blogs, watching a couple of 3 minute youtube videos) and listening to an audio book (iWoz) with a tab or two open. The best battery life I have gotten (basic web browsing) was 5 1/2 hours, with 60% LCD brightness, keyboard backlight off, and bluetooth off, with just Chrome and coconutBattery open.
    Is this the average battery life for everyone else? I bought this because of its supposedly good battery life, and though I am very happy with my purchase, I just want to make sure that I have a fully working MBP.
    Some other notes:
    The battery meter next to the clock sometimes says that 98% is fully charged (I think it is just a glitch)
    The estimated battery life is between 9-11 hours when brightness is at 30%-40%, airport and bluetooth is off, and keyboard backlight is off when I am doing text editing.
    Thanks in advance.
    EDIT: Forgot to say I have the 2.4ghz 250gb model.
    Message was edited by: trsohmers

    My MBP has been plugged in and fully charged for the past 2 hours and everything listed here has been the same, and here is some information in coconutBattery:
    Current Battery Charge: 5434 mAh
    Maximum Battery Charge:5490 mAh
    Current Battery Capacity:5490 mAh
    Original Battery Capacity:5770 mAh
    Battery-Loadcycles: 17
    Age of your Mac: 2 months (I have had it 2 weeks)
    Charger is connected: Yes
    Battery is charging: No

  • Question about using new battery in old Powerbook

    I have a pre-intel Powerbook G4, and the battery is pretty much toast (lasts about 15 minutes now). I have ordered a new battery for it, and I have this question about using it:
    Am I smarter to keep the new strong battery out of the PB most days (as I usually work with it plugged in at home) and just pop it in when I know I will be out surfing on batteries? Or is it just as good living in my laptop 24/7 and only occasionally being called upon to do its job?
    Current bad Battery Information below:
    Battery Installed: Yes
    First low level warning: No
    Full Charge Capacity (mAh): 1144
    Remaining Capacity (mAh): 1115
    Amperage (mA): 0
    Voltage (mV): 12387
    Cycle Count: 281
    thanks folks, Shereen

    Hi, Shereen. Every Powerbook battery wants to be used — drained and then recharged — at least every couple of weeks. If you've always used your Powerbook on AC power nearly all the time, and not followed that pattern of discharging and recharging the battery every week or two, it's possible that your use habits have shortened the lifespan and prematurely diminished the capacity of your old battery. Of course it's also possible that your battery is merely old, as a battery's capacity also diminishes with age regardless of how it's used. You didn't say how old the battery is in years, so this may or may not be an issue. I mention it only because it can be an issue.
    For general information on handling a battery for the longest possible lifespan, see this article. My advice on the basis of that article and long experience reading these forums is that it would be OK to do as you propose, but I doubt that you'd derive any significant benefit from it. You would still want to be sure of putting the new battery through a charge/discharge cycle every week or two, even if you didn't have a reason to use the Powerbook away from home or your desk, because sitting unused outside the computer is just as bad for a battery as sitting unused inside it. And you should never remove the battery from your computer when it's completely or almost completely discharged and let it sit that way any longer than a day or two.
    Message was edited by: eww

  • Important conceptual question about Application Module, Maximum Pool Size

    Hello everyone,
    We have a critical question about the Application Module default settings (taking the DB connections from a DataSource)
    I know that on the Web it is generally suggested that each request must end with either a commit or rollback when executing PL/SQL blocks "directly" on the DB without the framework BC/ViewObject/Entity service intervention.
    Now, for some reasons, we started to develop our applications with thinking that each Web Session would reference exactly one DB session (opened by any instance taken from the AM pool) for the whole duration of the session, so that the changes made by each Web session to its DB session would never interfere with the changes made by "other" Web Sessions to "other" DB sessions .
    In other words, because of that convincement we often implemented sort of "transactions" that open and close (with either commit or rollback) each DB session not in/after a single HTTP request, but during many HTTP Requests.
    As a concrete example think of this scenario:
    1. the user presses the "Insert" button. An HTTP request is fired. The action listener is executed and ends up with inserting rows in a table via a PL SQL block (not via the ViewObjects API).
    2. no commit or rollback after the above PL/SQL block is done yet.
    3. finally the user presses a "Commit" or "Rollback" button, firing the call to the appropriate AM methos.
    Those three requests consist of what I called "transaction".
    From the documentation it's clear that there is no guarantee that the couple AM istance + DB session is the same during all the requests.
    This means that, during step 2, it's possible that another user might reference the same "pending" AM/DbSession for his needs and "steal" somehow the work done via PL/SQL after step 1. (This happens because sessions taken by the pool are always rolled back by default.)
    Now my question is:
    Suppose we set the "Maximum Pool Size" parameter to very a great number (always inferior to the maximum number of concurrent users):
    Is there any guarantee that all the requests will be isolated in that case?
    I hope the problem is clear.
    Let me know if you want more details.

    Thanks for the answers.
    If I am right, from all your answers about resource avaiability, this means that even supposing the framework is able to always give us the same AM instance back from the AM pool (by following the session-affinity criterias), there is, however, no "connection affinity" with the connections from the DataSource. This means that the "same AM instance" might take the "a new DB connection", if necessary, from the connection pool of the DataSource. If that happens, that could give us the same problems as taking "a new AM instance" (that is, not following session-affinity) from the beginning, since each time an a new connection is taken (either via a new AM instance or via the same AM instance plus a new DB connection), the corresponding DB session is rolle back by default, clearing all the pending transactions we might have performed before with direct PL/SQL calls bypassing the AM services during the life cycle of our application, so that the new HTTP request will have a clean DB session to start to work with.

  • Question about battery maintenance and longevity

    I have a question about the efficacy of the built-in battery maintenance of the Lenovo Power Manager utility; specifically how it pertains to my W520, if that makes any difference.
    With my previous laptop (an HP), any time I knew it would be parked on my desk for a week or longer, I would manually discharge the battery to about 40% and remove it to run the machine on AC power only.  This proved to be an excellent practice that enabled the battery to work like new for three solid years.  As soon as I stopped bothering with that, the battery life started dropping like a stone.
    Lenovo's power manager offers the option to maintain the battery automatically or manually override it to maintain a charge within specific range.  But I am wondering: how well this will work in the long run as compared to handling it manually?  And how do the two options (automatic and manual range) compare with eachother in terms of maintaining long term?
    I currently use the manual setting and keep it between 40% and 45%.

    I would put into manual, you have more control. Automatic follows a preset rule, which may not apply in every case or battery model.
    Regards,
    Jin Li
    May this year, be the year of 'DO'!
    I am a volunteer, and not a paid staff of Lenovo or Microsoft

  • My iPhone 3GS is arriving soon, Questions about battery.

    Hello all. I have both the original iPhone and 3G. I purchased a 3GS and it is about to be shipped.
    I have a question about getting the MOST out of my battery.
    When I receive the phone, what is the best technique for getting the most out of the battery? Like what I mean is... Should I get the phone, use it all day until it dies and THEN fully charge it? Or should I charge it to 100% right when I get it?
    Or does it even matter?
    Thanks!

    Charge it to 100% out of the box. Then use it until it drains to zero, or close to it, and then recharge and you're good to go!
    Doug

  • Confused about the battery...

    Hello everyone,
    I'm from Pakistan and I just switched to Mac almost 2-3 weeks ago. Since, they have proper apple authorized dealers here so I finally decided to get one for myself. I had some confusion about the battery and my system and now I'm getting very much concerned and worried as a matter of fact.
    I installed coconut battery (as few people suggested me) to check my battery status. First of all, it shows the age of my Mac as 5 months, which is pretty surprising since I got a brand new one and even the condition is of a brand new one so I have no clue why did it say that.
    Secondly, I would like to tell the condition of my battery:
    Current Battery Charge: 3591 mAh (I'm using on battery power right now)
    Maximum Battery charge: 4068 mAh
    88%
    Current Battery Capacity: 4068 mAh
    Original Battery Capacity: 4100 mAh
    99%
    Additional info:
    Battery-Loadcycles : 12
    Age of your Mac: 5 months
    Charger connected: No
    Battery is charging: No
    I am just concerned that my battery current capacity decreased to 99% after just 12 load cycles. Why is that? Some people tell that they have a 100% even after using it for a long time and other than that does anyone have any idea why is the age being shown as 5 months when I have only used it for 2 weeks.
    I'm really confused.
    Another suggestion that I want is that in Pakistan, we are having major electricity load shedding so I can't keep it on AC power most of the time so if my computer is shut-down and being charged. If the electricity goes and when it comes back and it starts charging to the point from where it left, will that waste the load-cycle or will it continue to charge it from there without wasting cycle? Does that affect the battery life? (Assuming that the computer is shut-down while being charged)
    Last thing, should I use it mostly on AC power or is it better to charge it and then drain the battery and then charge it and then use. Till how much percent should I keep using on the battery power and then connect the Magsafe connector?
    Please help people
    I'd highly appreciate if you could answer my questions.
    Thank you.

    I was told that it is best to keep it plugged in and connected to the charger when you can, but if you are not able to do that then just use battery power. I just know you don't want too many cycles, which means you don't want to drain the battery completely then fully recharge it. You should calibrate the battery, which is pretty much just draining battery then recharging it, every couple of months if you keep it plugged into the charger and don't use just the battery often.

  • About the battery charging time.

    Hello everyone,
    I'm buying a Macbook pro 13 the next week and I have just one question about it.
    I've seen a lot of video reviews and unboxing videos in which the owners of the computers turn them on, with out charging the laptop. In addition, when they push the battery indicator button on the left side, the battery seems to be fully charged. So my question is: Do I have to have my macbook all the day long charging itself to get the maximum battery life?
    I hope you can understand my question and answer it, sorry for my English.
    Message was edited by: Fran93

    As long as the AC adaptor is connected the battery will charge if needed. Maximum battery life, however, is dependent upon having the battery fully charged before use. For more info see:
    About Batteries in Modern Apple Laptops
    Apple - Batteries - Notebooks
    Extending the Life of Your Laptop Battery
    Apple - Batteries
    Determining Battery Cycle Count
    Calibrating your computer's battery for best performance
    MacBook and MacBook Pro- Mac reduces processor speed when battery is removed while operating from an A-C adaptor
    Battery University

  • Few questions about iPhone 4S

    Hi,
    Recently I got an iPhone 4S, it is my first new phone in a long time, before this I had an old nokia, so I just have a few questions about it.
    I havve read a alot of horror stories about the 4S battery life, mine seems ok, here is what I would like to know
    1) How long should a healthy battery last?
    2) how long should it take to charge to 100% from 1 or 2%?
    On my daily commute I use listen it to music and sometimes user twiiter/facebook. I also get alerted of emails when they come in. So far it has just about lasted just about two days maybe before I had to recharge. Is this about right? As stated above I am coming from an old nokia, which is very dated now but the battery lasted almost a week before I had to charge, so having to charge my phone this often is new to me. My iPhone is really great and I just don't want any problems. I have turned off all extras that I don't need.
    BTW are the iPhone 4S battery issues a software or hardware issue?
    Thanks

    I attempted to read your post, but in amongst all the random, unrelated waffling, I couldn't actually find exactly what your iPhone related question for this "Using iPhone" forum was.
    Would you like to clarify? Concisely.

  • Question about Java's HttpServer: Threading? Backlog?

    Hello,
    I have two questions about Java's HttpServer (com.sun.net.httpserver). From the JavaDoc:
    >
    Management of threads can be done external to this object by providing a Executor object. If none is provided a default implementation is used.
    >
    How can I get information about the default implementation in 1.6.0_13? Do you know the behavior? From my observations, the default implementation uses no Threads, meaning every request is handled in the same Thread, this results in handling the requests to the HttpServer one after another.
    Is this right?
    The second question is about this, also from the JavaDoc:
    >
    When binding to an address and port number, the application can also specify an integer backlog parameter. This represents the maximum number of incoming TCP connections which the system will queue internally. [...]
    >
    When setting the backlog to -1, it uses the systems default backlog. How can I determine the systems default backlog? Can some lines of Java code reveal it (there is no getBeacklog() method)? Or is it up to the Operating System (we use Redhat Linux)?
    Thanks a lot for your help!
    Regards,
    Timo

    How can I determine the systems default backlog?You can't. There is no API for that even at the C level.
    Can some lines of Java code reveal itNo.
    Or is it up to the Operating System (we use Redhat Linux)?Yes. Linux provides a large default. It seems to be at least 50 on most platforms. This is not something you should be worrying about.

  • Question about the new Yoga 10 HD+

    Hi
    A few questions about the new Yoga 10 HD+ which I hope you can answer.
    I bought the old model last year. Loved the design and long battery time but a few major issues made me return it.
    Somewhere I read that it can't read NTFS over USB so I presume that's the same with an NTFS formatted microSD card?
    Can it read exFAT formatted microSD cards?
    Anyone observed issues regarding audio over bluetooth?
    (I know BT isn't exactly High End HiFi but the old Yoga 10 for some odd reason - most likely a driver issue which nobody cared to fix - sounded *much* worse with quite noticeably distortion while both my phone and a cheap noname tablet I have zero fidelity issues - no matter which of my bluetooth audio devices I tried aptX or not)
    So to avoid buying this only to return it too I really would like to see if I can have my questions answered before buying it.
    While I love the form factor and long running time the above issues are just two mayor dealbreakers to me. Bad audio quality = no joy listening to spotify, local MP3s etc. No NTFS or exFAT = no large movies.
    My old noname android tablet really could use an upgrade so I'm really curious whether this can be it or I should look at the competition and sacrify form factor and battery runtime.
    Thanks in advance.
    EDIT:
    If it's not supporting either NTFS or exFAT on the microSD have anyone tried ext3 and/or ext4?
    I mean with Androids Linux roots it should be a nobrainer to support at least when it comes to royalties unlike NTFS or exFAT where there *might* be some issues with Microsoft.
    Solved!
    Go to Solution.

    Thanks!
    OK. Seems I should just stay clear of this and look elsewhere
    Sony for sure I know support exFAT. I'm usure about Samsung. Odd it seems so hard to find out. File sizes of +4 GB should be taken for granted - it's not 199x anymore...
    Oh well. Wonder whether to just go for one from the competition or perhaps just save the money and wait until 64 bit catches on. Rumors is that the next Nexus 8 will be 64 bit... (I really don't expect an answer on this)

  • Questions about a MasterQuize program

    Hi, everyone.
    I got a in-class case study program like this in the class:
    * This class stores/represents a question that has one of two
    * answers: True or False.
    * <p></p>
    * It needs to track the following information:
    * <ul>
    * <li>Question text</li>
    * <li>Correct answer</li>
    * <li>The user's answer to the question</li>
    * <li>Points value</li>
    * <li>Category</li>
    * <li>Difficulty rating</li>
    * </ul>
    // Our question should allow us to do the following:
    // - Create question (constructor) -- may be overloaded
    // - Print (display) question
    // - Check client's answer for correctness
    // - Get points value for question (0 or max)
    //   - Add "No-BS" grading option
    // - Getting client's answer
    // - Check to see if answered by client
    public class TrueFalseQuestion
        // Class constants (to simplify changes to common values)
        public static final int MIN_DIFFICULTY_LEVEL = 1;
        public static final int MAX_DIFFICULTY_LEVEL = 5;
        public static final int DEFAULT_DIFFICULTY_LEVEL = 1;
        public static final int DEFAULT_POINT_VALUE = 1;
        public static final String DEFAULT_CATEGORY_VALUE = "none";
        // Class instance variables
        private String questionText;
        private String correctAnswer;
        private String userAnswer;
        private int pointsValue;
        private String category;
        private int difficultyLevel; // TODO: Set a range for difficulty levels
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * @param pts The total points available for this question
         * @param ctgry Category keyword for this question
         * @param level The perceived/intended difficulty level of this question
         * <p></p>
         * Defines a TrueFalseQuestion object.
        public TrueFalseQuestion (String text, String answer, int pts, String ctgry, int level)
            // Set starting values for all instance variables
            questionText = text.trim();
            correctAnswer = answer.trim();
            userAnswer = null; // No user answer supplied yet
            if (pts >= 1) // We assume that every problem is worth at least 1 point
                pointsValue = pts;
            else
                pointsValue = DEFAULT_POINT_VALUE;
            category = ctgry.trim();
            if (level >= MIN_DIFFICULTY_LEVEL && level <= MAX_DIFFICULTY_LEVEL) // within range
                difficultyLevel = level;
            else
                difficultyLevel = DEFAULT_DIFFICULTY_LEVEL;
        // Simplified (overloaded) constructors
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * @param pts The total points available for this question
         * <p></p>
         * Defines a TrueFalseQuestion with default values for category and difficulty level.
        public TrueFalseQuestion (String text, String answer, int pts)
            // Call pre-existing constructor with default category and difficulty
            this(text, answer, pts, DEFAULT_CATEGORY_VALUE, DEFAULT_DIFFICULTY_LEVEL);
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * <p></p>
         * Defines a TrueFalseQuestion with the default point value, default category,
         * and default difficulty level.
        public TrueFalseQuestion (String text, String answer)
            // Call pre-existing constructor with default points, category and difficulty
            this(text, answer, DEFAULT_POINT_VALUE, DEFAULT_CATEGORY_VALUE,
                 DEFAULT_DIFFICULTY_LEVEL);
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * @param pts The total points available for this question
         * @param ctgry Category keyword for this question
         * <p></p>
         * Defines a TrueFalseQuestion with the default difficulty level.
        public TrueFalseQuestion (String text, String answer, int pts, String ctgry)
            // Call pre-existing constructor with default points, category and difficulty
            this(text, answer, pts, ctgry,
                 DEFAULT_DIFFICULTY_LEVEL);
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * @param ctgry Category keyword for this question
         * <p></p>
         * Defines a TrueFalseQuestion with the default point value and the default
         * difficulty level.
        public TrueFalseQuestion (String text, String answer, String ctgry)
            // Use default points and difficulty
            this(text, answer, DEFAULT_POINT_VALUE, ctgry, DEFAULT_DIFFICULTY_LEVEL);
         * @param text The literal wording of this question
         * @param answer The correct answer for this question
         * @param pts The total points available for this question
         * @param level The perceived/intended difficulty level of this question
         * <p></p>
         * Defines a TrueFalseQuestion with the default value for the question category.
        public TrueFalseQuestion (String text, String answer, int pts, int level)
            // Use default category
            this(text, answer, pts, DEFAULT_CATEGORY_VALUE, level);
        // Clients can invoke this method to retrieve the text of the current question.
        // We chose to return the text instead of printing it; this allows the client
        // to decide how it should be presented (via a GUI, over a network, etc.)
        public String getQuestion ()
            return questionText;
        // This method allows the client to store the user's answer inside the
        // TrueFalseQuestion object for easy comparison
        public void submitAnswer (String ans)
            userAnswer = ans;
        // This method reports whether the submitted answer matches the correct answer
        public boolean answerIsCorrect(String userAns) // This version does all the work
            if (userAns == null) // No response from user (yet)
                return false;
            else
                // Normalize and compare answers
                char key = normalize(correctAnswer); // Get 't' or 'f'
                char ans = normalize(userAns); // Get 't' or 'f'
                return (key == ans);
        public boolean answerIsCorrect ()
            return answerIsCorrect(userAnswer); // Call previously-defined version
        public int getPointsValue()
            return pointsValue;
        // Return the points awarded for the user's answer. This method does
        // NOT support partial credit; answers are either correct or incorrect.
        // If the "No-BS" option is selected, blank (unanswered) questions receive
        // 1 point automatically; otherwise, the score will be either 0 or the
        // question's normal points value.
        public int getPointsEarned(boolean useNoBSRule)
    System.out.println("useNoBS: " + useNoBSRule + "\tuserAnswer: " + userAnswer + "\tcorrectAnswer: " + correctAnswer);
            if (useNoBSRule && (userAnswer == null))
                return 1;
            else if (userAnswer == null)
                return 0; // Without "No-BS", treat blank problems as incorrect
            if (answerIsCorrect() == false)
                return 0;
            else
                return pointsValue;
        // This method returns true if the user has submitted an answer
        // for this question (regardless of whether that answer is correct)
        public boolean hasBeenAnswered ()
            return (userAnswer != null);
        // Private helper method to convert all answers to single lowercase
        // letters (in this case, 't' for TRUE and 'f' for FALSE)
        private char normalize (String input)
             if (input != null)
                  input = input.trim(); // Remove leading whitespace
                  input = input.toLowerCase();
                  return input.charAt(0);
             else
                  return ' ';
    import java.util.*;
    * This class represents a complete test or quiz.
    * Data stored:
    * - List of questions
    * - Total score earned
    * - Total score possible
    * - Name/title of test
    * - Instructions
    *  - Category/class assignment
    *  - Student (test-taker) name
    *  - Date test is/was taken
    *  - Time started
    *  - Time completed
    *  - Maximum time allotted
    *  - (List of) Maximum attempts per question
    *  - List of attempts per question
    *  - List of difficulty ratings per question
    *  - Assignment weight
    * Methods:
    * - Constructor
    * - Add question
    * - Display question
    * - Display test
    * - Display instructions
    *      - Generate random exam
    * - Take/administer test
    * - Get score
    * STUFF TO DO:
    * - Add time/date restrictions
    * - Add network access restrictions
    * - Add other restrictions/allowances?
    * @author (your name)
    * @version (a version number or a date)
    public class Test
        // Class constant
        public static final int MAX_NUMBER_OF_QUESTIONS = 10;
        // Class instance variables
        private String testName;
        private int scoreEarned; // What the student earned on the exam
        private int scorePossible; // Total point values of all questions
        private String instructions; // Exam header text
        private ArrayList<TrueFalseQuestion> questions; // Create inside constructor
        // Methods
        public Test (String name, String instr)
            testName = name;
            scoreEarned = 0;
            scorePossible = 0;
            instructions = instr;
            questions = new ArrayList<TrueFalseQuestion>(); //[MAX_NUMBER_OF_QUESTIONS];
        public String getInstructions()
            return instructions;
        public int getScore()
            return scoreEarned;
        public void addQuestion (TrueFalseQuestion q)
            scorePossible += q.getPointsValue();
            questions.add(q); // Automatically append question to end of test
        public String displayQuestion (int position)
            if (position < questions.size())
                return (position+1) + ". " + questions.get(position).getQuestion();
            else
                return null;
        public String displayTest ()
            String result = "";
            for (int i = 0; i < questions.size(); i++)
                result += (i+1) + ". (";
                TrueFalseQuestion t = questions.get(i);
                result += t.getPointsValue();
                result += " points)\n\n" + displayQuestion(i);
                result += "\n\n";
            return result;
        // Get test length (number of questions)
        public int length ()
             return questions.size();
        // Submit answer to a specific question
        public boolean answer(int number, String a)
             // Question numbers run from 0-(max-1) -- THIS WAS AN OFF-BY-ONE ERROR AT FIRST
             if (number >= 0 && number < questions.size())
                  TrueFalseQuestion t = questions.get(number);
                  t.submitAnswer(a);
                  return true; // Question was answered
             else
                  return false; // Unable to answer (nonexistent) question
        // Score exam
        public void scoreExam (boolean useNoBS)
             scoreEarned = 0;
             for (int i = 0; i < questions.size(); i++) // For each question in exam
                  TrueFalseQuestion t = questions.get(i); // get current question
                  scoreEarned += t.getPointsEarned(useNoBS);
    }// Test harness for the Test and *Question classes
    import java.util.*;
    public class QuizDriver
         public static void main(String[] args)
              // Create a new Test object
              Test exam = new Test("Sample Exam", "Select the correct answer for each question");
              setUp(exam);
              Scanner sc = new Scanner(System.in);
              System.out.println(exam.getInstructions());
              // Administer exam
              for (int i = 0; i < exam.length(); i++)
                   // Print out current question
                   System.out.println(exam.displayQuestion(i));
                   // Get user answer
                   System.out.print("Your answer: ");
                   String ans = sc.nextLine();
                   if (ans.equals("")) // Handle blank responses for unanswered questions
                        ans = null;
                   exam.answer(i, ans);
              // Get exam results
              exam.scoreExam(true);
              System.out.println("Your final score was " + exam.getScore() + " points.");
         private static void setUp (Test t)
              TrueFalseQuestion x = new TrueFalseQuestion("The sky is blue.", "true", 2);
              t.addQuestion(x);
              x = new TrueFalseQuestion("The first FORTRAN compiler debuted in 1957", "true", 5);
              t.addQuestion(x);
              x = new TrueFalseQuestion("Spock was a Vulcan", "false", 3);
              t.addQuestion(x);
    }This program is far from finishing.
    I have many questions about this program, but let me ask this one first:
    In the TrueFalseQeustion class, why are there so many constructors? What is the purpose of setting some of the variables to default values?
    Thank you very much!!!
    Edited by: Terry001 on Apr 16, 2008 10:02 AM

    newark wrote:
    Stop ignoring the error messages. You seem to think that an error message means you're doing the assignment wrong. It's probably a simple fix. Post the exact error messages, as well as the code that corresponds to them. The error message will tell you exactly what line the problem occurs on, so you know right where to look.Hi,
    After some modifications, the program now gives me the result the assignment wants when I run it. But I still have trouble with the MultipleChoiceQuestion class
    Here is the complete program
    QuizDriver class
    // Test harness for the Test and *Question classes
    import java.util.*;
    public class QuizDriver
         public static void main(String[] args)
              // Create a new Test object
              Test exam = new Test("Sample Exam", "Select the correct answer for each question");
              setUp(exam);
              Scanner sc = new Scanner(System.in);
              System.out.println(exam.getInstructions());
              // Administer exam
              for (int i = 0; i < exam.length(); i++)
                   // Print out current question
                   System.out.println(exam.displayQuestion(i));
                   // Get user answer
                   System.out.print("Your answer: ");
                   String ans = sc.nextLine();
                   if (ans.equals("")) // Handle blank responses for unanswered questions
                        ans = null;
                   exam.answer(i, ans);
              // Get exam results
              exam.scoreExam(true);
              System.out.println("Your final score was " + exam.getScore() + " points.");
         private static void setUp (Test t)
                                   Question x;
              x = new TrueFalseQuestion("The sky is blue.", "true", 2);
              t.addQuestion(x);
              x = new TrueFalseQuestion("The first FORTRAN compiler debuted in 1957", "true", 5);
              t.addQuestion(x);
              x = new TrueFalseQuestion("Spock was a Vulcan", "false", 3);
              t.addQuestion(x);
              x = new MultipleChoiceQuestion("What is the color of the car\na.Red\nb.Green", "a. Red", 3);
              t.addQuestion(x);
              x = new MultipleChoiceQuestion("What is the name of this class\na.CSE110\nb.CSE114", "b, CSE114", 3);
              t.addQuestion(x);
    }Test
    public class Test
        // Class constant
        public static final int MAX_NUMBER_OF_QUESTIONS = 10;
        // Class instance variables
        private String testName;
        private int scoreEarned; // What the student earned on the exam
        private int scorePossible; // Total point values of all questions
        private String instructions; // Exam header text
        private ArrayList<Question> questions; // Create inside constructor
        // Methods
        public Test (String name, String instr)
            testName = name;
            scoreEarned = 0;
            scorePossible = 0;
            instructions = instr;
            questions = new ArrayList<Question>(); //[MAX_NUMBER_OF_QUESTIONS];
        public String getInstructions()
            return instructions;
        public int getScore()
            return scoreEarned;
        public void addQuestion (Question q)
            scorePossible += q.getPointsValue();
            questions.add(q); // Automatically append question to end of test
        public String displayQuestion (int position)
            if (position < questions.size())
                return (position+1) + ". " + questions.get(position).getQuestion();
            else
                return null;
        public String displayTest ()
            String result = "";
            for (int i = 0; i < questions.size(); i++)
                result += (i+1) + ". (";
                Question t = questions.get(i);
                result += t.getPointsValue();
                result += " points)\n\n" + displayQuestion(i);
                result += "\n\n";
            return result;
        // Get test length (number of questions)
        public int length ()
             return questions.size();
        // Submit answer to a specific question
        public boolean answer(int number, String a)
             // Question numbers run from 0-(max-1) -- THIS WAS AN OFF-BY-ONE ERROR AT FIRST
             if (number >= 0 && number < questions.size())
                  Question t = questions.get(number);
                  t.submitAnswer(a);
                  return true; // Question was answered
             else
                  return false; // Unable to answer (nonexistent) question
        // Score exam
        public void scoreExam (boolean useNoBS)
             scoreEarned = 0;
             for (int i = 0; i < questions.size(); i++) // For each question in exam
                  Question t = questions.get(i); // get current question
                  scoreEarned += t.getPointsEarned(useNoBS);
    }Question
    public class Question
    // Class constants
      public static final int MIN_DIFFICULTY_LEVEL = 1;
      public static final int MAX_DIFFICULTY_LEVEL = 5;
      public static final int DEFAULT_DIFFICULTY_LEVEL = 1;
      public static final int DEFAULT_POINT_VALUE = 1;
      public static final String DEFAULT_CATEGORY_VALUE = "none";
      // Class instance variables
      protected String questionText;
      protected String correctAnswer;
      protected String userAnswer;
      protected int pointsValue;
      protected String category;
      protected int difficultyLevel; //TODO: set a range for difficulty levels
      // Constructors
      public Question (String text, String answer, int pts, String ctgry, int level)
          questionText = text.trim();
          correctAnswer = answer.trim();
          userAnswer = null;
          if (pts >= 1)
              pointsValue = pts;
            else
                pointsValue = DEFAULT_POINT_VALUE;
            category = ctgry.trim();
            if (level >= MIN_DIFFICULTY_LEVEL && level <= MAX_DIFFICULTY_LEVEL)
                difficultyLevel = level;
            else
                difficultyLevel = DEFAULT_DIFFICULTY_LEVEL;
        // Overloaded (simplied) constructors
        public Question (String text, String answer, int pts)
            this(text, answer, pts, DEFAULT_CATEGORY_VALUE, DEFAULT_DIFFICULTY_LEVEL);
        public Question (String text, String answer, int pts, String ctgry)
            this(text, answer, pts, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public Question (String text, String answer, String ctgry)
            this(text, answer, DEFAULT_POINT_VALUE, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public Question (String text, String answer, int pts, int level)
            this(text, answer, pts, DEFAULT_CATEGORY_VALUE, level);
        // Methods
        public String getQuestion ()
            return questionText;
        // Use this method to store user answers
        public void submitAnswer (String ans)
            userAnswer = ans;
        public boolean answerIsCorrect (String userAns)
            if (userAns == null)
                return false;
            else
                // Normalize and compare answers
                char key = normalize (correctAnswer); //Get the first letter of an answer
                char ans = normalize (userAns); //Get the first letter of an answer
                return (key == ans);
        public boolean answerIsCorrect ()// Why do we need two answerisCorrect() methods?
            return answerIsCorrect (userAnswer);
        public int getPointsValue ()
            return pointsValue;
        public int getPointsEarned (boolean userNoBSRule)
            System.out.println ("useNoBS: " + userNoBSRule + "\tuseAnswer: " + userAnswer + "\tcorrectAnswer: " + correctAnswer);
            if (userNoBSRule && (userAnswer == null))
                return 1;
            else if (userAnswer == null)
                return 0;
            if (answerIsCorrect() == false)
                return 0;
            else
                return pointsValue;
        public String getCorrectAnswer ()
            return correctAnswer;
        public boolean hasBeenAnswered ()
            return (userAnswer != null);
        private char normalize (String input)
            if (input != null)
                input = input.trim();
                input = input.toLowerCase();
                return input.charAt(0);
            else
                return ' ';
           TrueFalseQuestion
    public class TrueFalseQuestion extends Question
      public TrueFalseQuestion (String text, String answer, int pts, String ctgry, int level)
          super(text, answer, pts, ctgry, level);
        public TrueFalseQuestion (String text, String answer, int pts)
            super(text, answer, pts, DEFAULT_CATEGORY_VALUE, DEFAULT_DIFFICULTY_LEVEL);
        public TrueFalseQuestion (String text, String answer, int pts, String ctgry)
            super(text, answer, pts, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public TrueFalseQuestion (String text, String answer, String ctgry)
            super(text, answer, DEFAULT_POINT_VALUE, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public TrueFalseQuestion (String text, String answer, int pts, int level)
            super(text, answer, pts, DEFAULT_CATEGORY_VALUE, level);
        // Methods
        public String[] getPossibleAnswerChoice ()
            String[] possibleAnswerChoice = {"true", "false"};
            return possibleAnswerChoice;
    } MultipleChoiceQuestion
    public class MultipleChoiceQuestion extends Question
       public MultipleChoiceQuestion (String text, String answer, int pts, String ctgry, int level)
           super(text, answer, pts, ctgry, level);
        public MultipleChoiceQuestion (String text, String answer, int pts)
            super(text, answer, pts, DEFAULT_CATEGORY_VALUE, DEFAULT_DIFFICULTY_LEVEL);
        public MultipleChoiceQuestion (String text, String answer, int pts, String ctgry)
            super(text, answer, pts, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public MultipleChoiceQuestion (String text, String answer, String ctgry)
            super(text, answer, DEFAULT_POINT_VALUE, ctgry, DEFAULT_DIFFICULTY_LEVEL);
        public MultipleChoiceQuestion (String text, String answer, int pts, int level)
            super(text, answer, pts, DEFAULT_CATEGORY_VALUE, level);
        // Methods
        String possibleAnswers;
        public String getPossibleAnswers ()
            return possibleAnswers;
        public void addAnswerChoice (String answerChoice)
            String ansChoice = answerChoice;
            questionText += "\nansChoice";
            possibleAnswers = answerChoice;
        public void printAnswerChoice ()
            System.out.println (questionText);
    } I don't understand why the assignment wants me to build a method in the MultpleChoiceQuestion class to store the potential answer choices, I can make the program display the potential answer choices by including them in the questionText as following in the QuizDriver class
    Question x;
    x = new MultipleChoiceQuestion("What is the color of the car\na.Red\nb.Green", "a. Red", 3);
    t.addQuestion(x); I don't know how to allow the client to construct the list of answer choices one at a time(add one potential answer choice by calling the addAsnwerChoices() method once)
    Here are a few original sentences of my assignment which describe what I should do with the MultipleChoiceQuestion class
    Using TrueFalseQuestion as a model, develop a new MultipleChoiceQuestion class that can be used to represent a problem where the user must select one of several answer choices (e.g., "Select answer (a), (b), (c), or (d)."). This new question type should have all of the same externally-visible functionality as TrueFalseQuestion, except that it must:
    maintain a list of potential answer choices
    provide a method that allows the client to construct the list of answer choices one at a time (i.e., the client should be able to call an addAnswerChoice() method to pass a new answer option to the MultipleChoiceQuestion.)
    display (as part of the question text) the list of answer choices with appropriate letters ("abcd" instead of "0123") I don't understand what these sentences mean.
    1. "Maintain a list of potential answer choices"-- this reminds me of the getPossibleAnswerChoice() method in the TrueFalseQuestion class
    public String[] getPossibleAnswerChoice ()
            String[] possibleAnswerChoice = {"true", "false"};
            return possibleAnswerChoice;
        }I wonder that if the potential answer choices I have to store in the MultipleChoiceQuestion class are only letters "a", "b", "c", "d", etc, or include the answer text coming after the letters(eg. a.Red, b.Green)
    2. "provide a method that allows the client to construct the list of answer choices one at a time". How do I achieve the functionality "one at a time"? Do I need to pass the input of the client (a potential answer choice) to the variable of the method which stores the list of potential answers?
    3. "display (as part of the question text) the list of answer choices with appropriate letters". My question here is that: When the client type in one possible answer, should I append it to the variable questionText? (So I use the questionText variable in the methods of the first and second steps)
    Thank you very much for your nice help!
    Edited by: Terry001 on Apr 21, 2008 8:01 AM

Maybe you are looking for

  • How can I sync only Calendars and Contacts on my work PC

    Previous versions of the iCloud control panel allowed me to select separately which items I wanted to sync with a PC, Calendars, Contact, Email. The new version of the control panel has this bundled as a single choice. How can I eliminate incuding ma

  • Layer disappears in Safari, off center in Firefox, but perfect in Internet Explorer!

    I have a layer of a quicktime file on top of a jpeg image. In Safari 3.1, there is nothing but the jpeg. In Firefox 2.0.0.14, the quicktime box is off to the left and works, though off-center. In Internet Explorer 5.2 (Mac), the quicktime file works

  • Query Plan changes with search criteria

    Hi! I have a query like below SELECT x.id from id_table x ,(select a.id from text_table a where a.p_date >= trunc(sysdate-1) and a.p_date <= trunc(sysdate-1) and a.p_time >= to_date('2012-05-30 00:00:00','YYYY-MM-DD HH24:MI:SS') and a.p_time >= to_da

  • BAPI_USER_CHANGE "named argument not found" error in VBA

    Folks, I'm trying to update SAP users' email addresses en masse via a VBA routine.  The subroutine I'm trying to run is here, at least in skeletal form (it still needs MAPI code to pick up the email information, but that's outside the scope of the qu

  • Photomerge Panorama has stopped working

    I have an HP Desktop and an HP Laptop both just over a year old and working fine. Elements 7 has been on both computers since I purchased them and on many occasions I have successfully created Panoramas. Suddenly - a few days ago - Photomerge Panoram