Reputation: 17
I am trying to do a java program but I am having a problem with the output.
Here is the error I get when I input the information.
Enter social security number:12345678
Enter salary3000
Please input next security numbers or -1 to quit:12345666
Enter salary2122
Please input next security numbers or -1 to quit:900000000
Enter salary3000
Please input next security numbers or -1 to quit:-1
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = ':'
at java.util.Formatter.checkText(Formatter.java:2547)
at java.util.Formatter.parse(Formatter.java:2533)
at java.util.Formatter.format(Formatter.java:2469)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at Salaries.output(Salaries.java:57)
at Salaries.main(Salaries.java:19)
And here is my code so far..
import java.util.Scanner; public class Salaries {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
int[] ssNumbers = new int [10];
double[] salaries = new double [10];
double[] nSalaries = new double [10];
int c;
c = inputData (ssNumbers, salaries);
raise (salaries, c);
output (ssNumbers, salaries, nSalaries);
}
public static int inputData (int[]ssn, double[]sals){
int c = 0;
Scanner input = new Scanner (System.in);
int ssNum;
System.out.print("Enter social security number:");
ssNum = input.nextInt();
while (ssNum != -1) //using while loop.
{
ssn[c] = ssNum;
System.out.print("Enter salary");
sals[c] = input.nextDouble();
c++;
System.out.print("Please input next security numbers or -1 to quit:");
ssNum = input.nextInt();
}
return c;
}
public static void raise (double[] salaries, int c)
{
double[] salaryraise = new double [10];
for (int i = 0; i < c; i++ )
salaryraise[i] = salaries[i]*.02;
}
public static void output (int[] ssNumbers, double[] salaries, double[] nSalary )
{
System.out.printf("%-20s%-20s%-20s%:\n", "Social Security Number", "Salaries", "Salary After Raise");
for (int i = 0; i < salaries.length; i++)
System.out.printf("%d %.2f %.2f", ssNumbers[i], salaries[i], nSalary[i]);
return;
}
}
Upvotes: 0
Views: 221
Reputation: 585
The % character at the end of format make the error. Should delete it lis below:
System.out.printf("%-20s%-20s%-20s%:\n",
>>System.out.printf("%-20s%-20s%-20s:\n",
Upvotes: 0
Reputation: 88
You have a "%:" in this line you'll wanna remove. (because it's not a valid specifier)
System.out.printf("%-20s%-20s%-20s%:\n", "Social Security Number", "Salaries", "Salary After Raise");
:)
Upvotes: 1
Reputation: 159
Try changing the line:
System.out.printf("the salary after raise is %f\n:", salaryraise);
To:
System.out.println("the salary after raise is: " + salaryraise);
Upvotes: 0