I am very new to Java. I have barely gotten through the basics (this is my first attempt at using a while loop) and now conveniently have a problem at work that can clearly be solved with programming. We need to add numbers to a print document in the format "xx-xx-xx" such that it will begin with 00-00-00 and end with 99-99-99. Specifically, I need to have leading zeros for the single digits.
I have managed to write a program that prints the numbers we need and I just found out I can output to a text file simply in command prompt (horrifically slow on this old computer using Windows XP and java 1.7), but I can't figure out how to add 0 in front of single digit numbers.
Here's what I have:
public class Numbers {
public static void main(String[] args){
int a = 0;
int b = 0;
int c = 0;
while (a<100) {
if(c<99){
c = c+1;
System.out.println(a + "-" + b + "-" + c);
}
else if(b<99) {
c = 0;
b = b+1;
System.out.println(a + "-" + b + "-" + c);
}
else if(a<99) {
c = 0;
b = 0;
a = a+1;
System.out.println(a + "-" + b + "-" + c);
}
}
}
}
I have tried a couple of things, but I am most likely not implementing them correctly because, again, I have no idea what I'm doing. I understand that there is a way to format strings in general and there is a printf function and I know there is something you can do with %02d (I've seen String.format("%02d", myNumber) as an answer, but couldn't figure out exactly how to implement that in my code) and I read something about PrintStream and PrintWriter, etc, but I am not nearly experienced enough to know how to use all of that.
The real problem is that I don't exactly have a lot of time to work on this, unfortunately our clients all demand quick turnaround times (they were already asking for a sample yesterday afternoon, hours after we got the job). I'm sure I would eventually be able to figure it out and I will continue trying when I have time, but I also have other work to do and didn't have time last night.
I was thinking of rewriting the code to get rid of the dashes (thinking maybe the fact that there is a string already being printed prevents me from being able to format what I print) but I expect I will run into other problems there.
I would greatly appreciate any input and suggestions for further exploration of java and programming in general (I think I love learning more than just about anything else, I am constantly ravenous and can't be sated).
You can do,
System.out.printf("%02d-%02d-%02d\n", a, b, c);
instead of your println statements.
For a single integral type number a
, use
System.out.printf("%02d-%02d-%02d\\n", a / 100 / 100 % 100, a / 100 % 100, a % 100);
would do it. The % 100
extracts the last two digits of the int
s. The /
is used to extract the bits of the number you need.
If you have three separate numbers a
, b
, and c
, use
System.out.printf("%02d-%02d-%02d\\n", a % 100, b % 100, c % 100);
If you want custom outputs: use the command
System.out.printf();
in your case you need to use
System.out.printf("%02d-%02d-%02d",a,b,c);
instead of System.out.println();
statements
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.