嵌套的If / Else语句

时间:2012-02-24 04:55:59

标签: java if-statement formatexception

很抱歉再次编辑这篇文章,但我没想再发帖,我想我会在这里问。

    public static void main(String[] args)
{
    // TODO code application logic here

char response = 0;
double grossAnnualIncome = 0.0;
double annualTuition = 0.0;
double annualCharity = 0.0;
double homeMortgage = 0.0;
double healthCredit = 0.0;
double annualAfterTaxes = 0.0;
double monthlyAfterTaxes = 0.0;
double taxAt17 = 0.0;
double taxableIncome = 0.0;
double ans1 = 0.0;

Scanner input = new Scanner(System.in);

System.out.printf( "Please enter your gross annual income or 0 for none: " );
grossAnnualIncome = input.nextDouble();

if( grossAnnualIncome > 0 )
    {
    System.out.printf( "Please enter your annual tuition and expenses for higher education or 0 for none: ");
    annualTuition = input.nextDouble();

 System.out.printf( "Please enter your annual charitable contributions or 0 for none: ");
    annualCharity = input.nextDouble();

    System.out.printf( "Please enter the annual interest paid for your home mortgage or 0 for none: ");
    homeMortgage = input.nextDouble();
    input.nextLine();

    System.out.printf( "Did you purchase health insurance through your employer or outside the workplace?"
              + " Enter 'Y' or 'N': ");
response = input.nextLine().charAt(0);


        if( Character.toUpperCase(response) == 'Y' )
        {
        System.out.printf( "Are you filing as a family?  Enter 'Y' or 'N': ");
        response = input.nextLine().charAt(0);

            if ( Character.toUpperCase(response) == 'Y' )
            {
            healthCredit = 3500;
            }
        else
        {

        if( Character.toUpperCase(response) == 'N' )
            {
                System.out.printf( "Are you filing as single?  Enter 'Y' or 'N': ");
                response = input.nextLine().charAt(0);
            }
                    if( Character.toUpperCase(response) == 'Y')
                    {
                    healthCredit = 2000;
                    }

        }

        }
        else
        {
        healthCredit = 0;
        }

    taxableIncome = grossAnnualIncome - homeMortgage - annualTuition - annualCharity - healthCredit;
        taxAt17 = taxableIncome * .17;
        annualAfterTaxes = grossAnnualIncome - taxAt17;
        monthlyAfterTaxes = annualAfterTaxes / 12;
        ans1 = homeMortgage + annualTuition + annualCharity + healthCredit;

    System.out.printf( "\nYOUR TAXES\n\n"
                    + "Gross Annual Income: %,.0f\n\n"
                    + "Deductions: \n"
                    + "\tHigher Education: %,.0f\n"
                    + "\tCharitable Contributions: %,.0f\n"
                    + "\tHome Mortgage Interest: %,.0f\n"
                    + "\tHealth Insurance Tax Credit: %,.0f\n\n"
                    + "Tax at 17%%: %,.0f\n"
                    + "Annual Income After Taxes: %,.0f\n"
                    + "Monthly Income After Taxes: %,.0f", grossAnnualIncome, annualTuition, annualCharity,
                       homeMortgage, healthCredit, taxAt17, annualAfterTaxes, monthlyAfterTaxes);


}

  if( grossAnnualIncome <= 0 )
  {
  System.out.printf( "You earned no income so you owe no taxes!" );
  }

   System.exit(0);
  }

}

我的两个输出都是正确的,但是我的上一个输出有问题。

我的上一次输出需要阅读“你在税收中欠你的钱!”

当我编码时:

if (grossAnnualIncome <= ans1)
{
System.out.printf( "YOU OWE $0.00 IN TAXES!" );
}

它显示了来自grossAnnualIncome&gt;的所有内容。 0输出。

1 个答案:

答案 0 :(得分:2)

Java: Literal percent sign in printf statement

这可能与17%的百分比有关。它需要转义,可以用另一个%

完成
17%%