user3444913
user3444913

Reputation: 17

Error in the output of my java program

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

Answers (3)

tana
tana

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

tony
tony

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

Gasper Gulotta
Gasper Gulotta

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

Related Questions