Java非法的表达式起始

3

我已经在谷歌上搜索了一番,但是仍然无法理解我的代码有什么问题。

在第一个“Else if”语句的if语句中,我遇到了一个“非法表达式开始”的错误。

我对Java还很陌生,但是由于它是我计算机课程的要求,我正在努力快速学习。

非常感谢任何帮助。

import java.util.Scanner;

public class net_salary{

public static void main(String[]args){    
    Scanner in = new Scanner(System.in);    

    int income;
    int incometax;
    int afterincometax;
    int nationalinsurance;
    int afterni;
    int pension;

    income = in.nextInt();       

    if(income = 0) {
        incometax = 0;
    } else if (income >=9000 & <=21000) {
        incometax = income * 0.15;
    } else if (income >=21000 & <=31000) {
        incometax = income * 0.2;       
    } else if (income >=31000 & <=50000) {
        incometax = income * 0.225                
5个回答

6
你需要使用else if (income >=9000 && income <=21000)而不是else if (income >=9000 & <=21000)
其他的else if表达式同理。
你必须对收入进行两次单独的比较。不能说“如果收入大于或等于9000或小于或等于21000”。必须说“如果收入大于9000或收入小于等于21000”。 &是按位与,&&是逻辑与。
正如其他人所述,income = 0应该改为income == 0

你好!感谢回复,即使使用了双 &&,我仍然得到相同的错误。 - Herten Ferford
帮个白痴忙,给我展示一下它会是什么样子?我明白你在说什么,但不确定该如何表达——再次感谢。 - Herten Ferford
1
"& 是按位与运算符。&& 是逻辑与运算符。实际上,在这种情况下,& 也是一个逻辑运算符。" - Bhesh Gurung
这是正确的,但因为&&是常规逻辑运算符,我希望原始贴主清楚地知道这些运算符通常有不同的用途。给你加1分。 - Zéychin
实际上,我不同意允许被用作逻辑运算符,因为它会让阅读源代码变得混乱,特别是对于新手程序员来说。 - Zéychin
显示剩余2条评论

3

您需要使用 && 而不是 &,并重复变量 'income':

else if (income >=9000 && income <=21000)

您当前使用的是 =,可能意思是 ==。
if(income == 0)

= 赋值,== 比较两个值是否相等。


1
你的 if/else if 块表达式应该始终作为布尔值 (true/false) 显示。在 Java 中,&& 表示 AND,& 是一种位运算符,用于操作位。
if(income == 0)
    {
        incometax = 0;

    }
**else if (income >=9000 && income <=21000)**
    {
        incometax = income * 0.15;
    }

else if (income >=21000 && income <=31000)
    {
        incometax = income * 0.2;

    }

else if (income >=31000 && income <=50000)
    {
        incometax = income * 0.225

1

请检查Java中“=”,“==”,“&”,“&&”运算符的用法。

public class net_salary{
  public static void main(String[]args){
    int income, ncometax, afterincometax, nationalinsurance, afterni, pension; 
    Scanner in = new Scanner(System.in);   
    income = in.nextInt();

    if(income == 0) {
       incometax = 0;
    } else if (income >= 9000 && income <= 21000) {
       incometax = income * 0.15;
    } else if (income >=21000 && income <= 31000) {
       incometax = income * 0.2;
    } else if (income >=31000 && income <= 50000) {
    }
  }
}

1

如果(收入=0)

应该是

如果(收入==0)

而且

else if (income >=9000 & <=21000)

(以及它的跟随者) 应该是

else if (income >=9000 && income <=21000)

看起来你需要将一些变量从int改为double。


2
你关于 else if 块的评论似乎有些奇怪。在你的修正版本中仍然使用了按位 AND,并且检查了 9000 <= 21000(为什么要这样做?)。 - eldarerathis
1
我想你的意思是要检查income <= 21000。:-. - Zéychin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接