Java 获取没有“如果”错误的“其他”,不知道原因

Java 获取没有“如果”错误的“其他”,不知道原因,java,if-statement,compiler-errors,Java,If Statement,Compiler Errors,这是Java语言,我使用TextWrangler。我遇到了几个错误,包括没有“如果”错误的“其他”错误,我不知道为什么。我还必须缴纳公共课税{ public static void mainString[]args{,因为它告诉我它们没有正确编码。我收到的一些错误示例包括: Tax.java:85: error: 'else' without 'if' else(taxable <= 186475) Tax.java:85: error: ';' expected

这是Java语言,我使用TextWrangler。我遇到了几个错误,包括没有“如果”错误的“其他”错误,我不知道为什么。我还必须缴纳公共课税{ public static void mainString[]args{,因为它告诉我它们没有正确编码。我收到的一些错误示例包括:

Tax.java:85: error: 'else' without 'if'
        else(taxable <= 186475)

Tax.java:85: error: ';' expected
        else(taxable <= 186475)
                               ^

Tax.java:85: error: not a statement
        else(taxable <= 186475)
            ^

import java.util.Scanner;


    java.util.Scanner input = new java.util.Scanner(System.in);

    double tax;

    System.out.print("Please enter filing status: ");
    int status = input.nextInt();

    System.out.println("Please enter taxable income: ");
    double taxable = input.nextDouble();

    if(status == 0){
        if(taxable <= 8350)
            tax = taxable * .10;
            System.out.println("Tax is " + tax);    
        else if(33950 >= taxable && taxable >= 8351)
            taxable = taxable - 8350;
            tax = taxable * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        else if(82250 >= taxable && taxable >= 33951)
            taxable = taxable - 33950 - 8350;
            tax = taxable * .25 + 33950 * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        else if(171550 >= taxable && taxable >= 82251)
            taxable = taxable - 82250 - 33950 - 8350;
            tax = taxable * .28 + 82250 * .25 + 33950 * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        else if(372950 >= taxable && taxable >= 171551)
            taxable = taxable - 171550 - 82250 - 33950 - 8350;
            tax = taxable * .33 + 171550 * .28 + 82250 * .25 + 33950 * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        else(taxable <= 372951)
            taxable = taxable - 372950 - 171550 - 82250 - 33950 - 8350;
            tax = taxable * .35 + 372950 * .33 + 171550 * .28 + 82250 * .25 + 33950 * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        }   
始终将所有代码块用大括号括起来,尤其是在开始时,包括所有if块、所有循环、所有控制结构

错误的缩进欺骗了您,使您认为if块包含3行代码,而它只包含一行代码

你可以看到:

    if (taxable <= 8350)
        tax = taxable * .10;
        System.out.println("Tax is " + tax);    
    else if(33950 >= taxable && taxable >= 8351)
        taxable = taxable - 8350;
        tax = taxable * .15 + 8350 * .10;
        System.out.println("Tax is " + tax);
实际上相当于:

    if (taxable <= 8350) {
        tax = taxable * .10;
    }

    System.out.println("Tax is " + tax);    

    // you've got a hanging else here
    else if(33950 >= taxable && taxable >= 8351) {
        taxable = taxable - 8350;
    }

    tax = taxable * .15 + 8350 * .10;
    System.out.println("Tax is " + tax);

    // and more hanging else's below...
    if (taxable <= 8350) {
        tax = taxable * .10;
        System.out.println("Tax is " + tax);    
    }  else if(33950 >= taxable && taxable >= 8351) {
        taxable = taxable - 8350;
        tax = taxable * .15 + 8350 * .10;
        System.out.println("Tax is " + tax);
    } //.... and continue similarly throughout your program
因此,将其更改为:

    if (taxable <= 8350) {
        tax = taxable * .10;
    }

    System.out.println("Tax is " + tax);    

    // you've got a hanging else here
    else if(33950 >= taxable && taxable >= 8351) {
        taxable = taxable - 8350;
    }

    tax = taxable * .15 + 8350 * .10;
    System.out.println("Tax is " + tax);

    // and more hanging else's below...
    if (taxable <= 8350) {
        tax = taxable * .10;
        System.out.println("Tax is " + tax);    
    }  else if(33950 >= taxable && taxable >= 8351) {
        taxable = taxable - 8350;
        tax = taxable * .15 + 8350 * .10;
        System.out.println("Tax is " + tax);
    } //.... and continue similarly throughout your program

因为if语句没有用{}括起来


这意味着该if语句下只计算下一行。以下行在if语句外执行,然后在else语句前放置if语句。

您需要在'then'子句周围加括号。例如:

if(taxable <= 8350) {
        tax = taxable * .10;
        System.out.println("Tax is " + tax);    
}
else  .....

如果If或ELSE的主体跨越多个语句,则需要使用大括号。

如果If或ELSE的主体跨越多个语句,则在其周围使用大括号。最好始终使用大括号

形式

块是平衡大括号之间的一组零个或多个语句,可以在允许使用单个语句的任何位置使用。下面的示例BlockDemo演示了块的使用

按如下方式书写:

   if(status == 0){
        if(taxable <= 8350){
            tax = taxable * .10;
            System.out.println("Tax is " + tax);    
         }
        else if(33950 >= taxable && taxable >= 8351){
            taxable = taxable - 8350;
            tax = taxable * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
         }

 ....
        } 

您需要为if添加花括号

if(taxable <= 8350){
            tax = taxable * .10;
            System.out.println("Tax is " + tax);    
        }else if(33950 >= taxable && taxable >= 8351){
            taxable = taxable - 8350;
            tax = taxable * .15 + 8350 * .10;
            System.out.println("Tax is " + tax);
        }

否则,就好像只有第一行在if

中,似乎你是个初学者。习惯使用{}。我以前确实使用过这些,但出于某种原因,它会导致出现更多的问题,但现在这些问题没有出现。仍然会出现其他两个错误,但原始问题已经消失。请不要忘记这行中的“如果”一词:elsetaxable谢谢,能够修复“其他”问题而没有“如果”错误,但我仍然有这些错误突然出现的家伙:java:102:error:从技术上讲,这不是一个可转换的语句,它是多个语句。